README: Kill "obligatory" and "optional" tags.
[paraslash.git] / net.c
diff --git a/net.c b/net.c
index c5f33c822164195615d7f8f318f22a3f1d43a79f..f896f564308213407fc8048512b1a53a56108fe1 100644 (file)
--- a/net.c
+++ b/net.c
@@ -7,9 +7,9 @@
 /** \file net.c networking-related helper functions */
 
 #include "para.h"
+#include "error.h"
 #include "net.h"
 #include "string.h"
-#include "error.h"
 
 
 /** Information about one encrypted connection. */
@@ -120,7 +120,7 @@ static int sendall(int fd, const char *buf, size_t *len)
                total += n;
                bytesleft -= n;
                if (total < *len)
-                       PARA_DEBUG_LOG("short write (%zd byte(s) left)",
+                       PARA_DEBUG_LOG("short write (%zd byte(s) left)\n",
                                *len - total);
        }
        *len = total; /* return number actually sent here */
@@ -128,15 +128,15 @@ static int sendall(int fd, const char *buf, size_t *len)
 }
 
 /**
- * encrypt and send buffer
+ * Encrypt and send a binary buffer.
  *
- * \param fd:  the file descriptor
- * \param buf the buffer to be encrypted and sent
- * \param len the length of \a buf
+ * \param fd The file descriptor.
+ * \param buf The buffer to be encrypted and sent.
+ * \param len The length of \a buf.
  *
- * Check if encrytpion is available. If yes, encrypt the given buffer.  Send out
- * the buffer, encrypted or not, and try to resend the remaing part in case of
- * short writes.
+ * Check if encryption is available. If yes, encrypt the given buffer.  Send
+ * out the buffer, encrypted or not, and try to resend the remaing part in case
+ * of short writes.
  *
  * \return Positive on success, \p -E_SEND on errors.
  */
@@ -151,7 +151,8 @@ int send_bin_buffer(int fd, const char *buf, size_t len)
                cf = crypt_data_array[fd].send;
        if (cf) {
                void *private = crypt_data_array[fd].private_data;
-               unsigned char *outbuf = para_malloc(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);
                free(outbuf);
@@ -283,14 +284,16 @@ int get_host_info(char *host, struct hostent **ret)
 }
 
 /**
- * a wrapper around socket(2)
+ * A wrapper around socket(2).
  *
- * Create an IPv4 socket for sequenced, reliable, two-way, connection-based
- * byte streams.
+ * \param domain The communication domain that selects the protocol family.
  *
  * \return The socket fd on success, -E_SOCKET on errors.
  *
- * \sa socket(2)
+ * Create an IPv4 socket for sequenced, reliable, two-way, connection-based
+ * byte streams.
+ *
+ * \sa socket(2).
  */
 int get_stream_socket(int domain)
 {
@@ -301,26 +304,6 @@ int get_stream_socket(int domain)
        return socket_fd;
 }
 
-/**
- * a wrapper around connect(2)
- *
- * \param fd the file descriptor
- * \param their_addr the address to connect
- *
- * \return \p -E_CONNECT on errors, 1 on success
- *
- * \sa connect(2)
- */
-int para_connect(int fd, struct sockaddr_in *their_addr)
-{
-       int ret;
-
-       if ((ret = connect(fd, (struct sockaddr *)their_addr,
-                       sizeof(struct sockaddr))) == -1)
-               return -E_CONNECT;
-       return 1;
-}
-
 /**
  * paraslash's wrapper around the accept system call
  *