X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=net.c;h=b2c9c43a81ad356ec021373c12d5c764fa5b76f4;hp=543485e75c084a19ded62eff4f0393c29a157955;hb=68f0d202714b85c9b5e649dcefc41df58fe8e31e;hpb=12d15401324e33962f1802e2d6844fdfd6d62bb9 diff --git a/net.c b/net.c index 543485e7..b2c9c43a 100644 --- a/net.c +++ b/net.c @@ -19,11 +19,13 @@ #define AI_ADDRCONFIG 0 #endif +#include #include "para.h" #include "error.h" #include "net.h" #include "string.h" +#include "fd.h" /** Information about one encrypted connection. */ @@ -345,31 +347,6 @@ struct in_addr extract_v4_addr(const struct sockaddr_storage *ss) return ia; } -/* - * Send out a buffer, resend on short writes. - * - * \param fd The file descriptor. - * \param buf The buffer to be sent. - * \param len The length of \a buf. - * - * \return Standard. In any case, the number of bytes actually sent is stored - * in \a len. - */ -static int sendall(int fd, const char *buf, size_t *len) -{ - size_t total = *len; - - assert(total); - *len = 0; - while (*len < total) { - int ret = write(fd, buf + *len, total - *len); - if (ret == -1) - return -ERRNO_TO_PARA_ERROR(errno); - *len += ret; - } - return 1; -} - /** * Encrypt and send a binary buffer. * @@ -389,7 +366,7 @@ int send_bin_buffer(int fd, const char *buf, size_t len) crypt_function *cf = NULL; if (!len) - PARA_CRIT_LOG("%s", "len == 0\n"); + PARA_CRIT_LOG("len == 0\n"); if (fd + 1 <= cda_size) cf = crypt_data_array[fd].send; if (cf) { @@ -397,10 +374,10 @@ int send_bin_buffer(int fd, const char *buf, size_t len) /* RC4 may write more than len to the output buffer */ unsigned char *outbuf = para_malloc(ROUND_UP(len, 8)); (*cf)(len, (unsigned char *)buf, outbuf, private); - ret = sendall(fd, (char *)outbuf, &len); + ret = write_all(fd, (char *)outbuf, &len); free(outbuf); } else - ret = sendall(fd, buf, &len); + ret = write_all(fd, buf, &len); return ret; }