aacdec: Introduce error_count
[paraslash.git] / net.c
diff --git a/net.c b/net.c
index 5b75411..582fa04 100644 (file)
--- a/net.c
+++ b/net.c
@@ -21,7 +21,6 @@
 #include "para.h"
 #include "net.h"
 #include "string.h"
-#include <netdb.h>
 #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;
 }
 
 /**
@@ -344,7 +347,7 @@ int recv_cred_buffer(int fd, char *buf, size_t size)
 {
        return recv_buffer(fd, buf, size) > 0? 1 : -E_RECVMSG;
 }
-#else HAVE_UCRED
+#else /* HAVE_UCRED */
 /**
  * send NULL terminated buffer and Unix credentials of the current process
  *
@@ -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;
 }