X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=net.c;h=582fa04dad3c3f61c98fd975d551424123759da8;hp=bf35162f77d57191403972028bb04f24415a802b;hb=d7f72444e863fb5aae145d4e720cd71dc03578b0;hpb=839a32891754f3f162b73f88b58e04eab8032d7a;ds=sidebyside diff --git a/net.c b/net.c index bf35162f..582fa04d 100644 --- a/net.c +++ b/net.c @@ -21,7 +21,6 @@ #include "para.h" #include "net.h" #include "string.h" -#include #include "error.h" extern void (*crypt_function_recv)(unsigned long len, const unsigned char *indata, unsigned char *outdata); @@ -189,8 +188,11 @@ int recv_buffer(int fd, char *buf, ssize_t size) { int n; - if ((n = recv_bin_buffer(fd, buf, size - 1)) >= 0) + n = recv_bin_buffer(fd, buf, size - 1); + if (n >= 0) buf[n] = '\0'; + else + *buf = '\0'; return n; } @@ -201,11 +203,12 @@ int recv_buffer(int fd, char *buf, ssize_t size) * \return The hostent structure or a NULL pointer if an error occurs * \sa gethostbyname(2) */ -struct hostent *get_host_info(char *host) +int get_host_info(char *host, struct hostent **ret) { PARA_INFO_LOG("getting host info of %s\n", host); /* FIXME: gethostbyname() is obsolete */ - return gethostbyname(host); + *ret = gethostbyname(host); + return *ret? 1 : -E_HOST_INFO; } /** @@ -514,8 +517,8 @@ int recv_pattern(int fd, const char *pattern, size_t bufsize) goto out; ret = 1; out: - free(buf); if (ret < 0) - PARA_NOTICE_LOG("did not receive pattern '%s'\n", buf); + PARA_NOTICE_LOG("did not receive pattern '%s'\n", pattern); + free(buf); return ret; }