Typo.
[tinc] / src / meta.c
index fa475df..e1e1c67 100644 (file)
@@ -17,7 +17,7 @@
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
-    $Id: meta.c,v 1.1.2.29 2002/09/09 21:24:34 guus Exp $
+    $Id: meta.c,v 1.1.2.33 2003/03/19 11:45:05 guus Exp $
 */
 
 #include "config.h"
 #include "system.h"
 #include "protocol.h"
 
-int send_meta(connection_t * c, char *buffer, int length)
+int send_meta(connection_t *c, char *buffer, int length)
 {
        char *bufp;
        int outlen;
        char outbuf[MAXBUFSIZE];
+       int result;
 
        cp();
 
@@ -58,16 +59,23 @@ int send_meta(connection_t * c, char *buffer, int length)
        } else
                bufp = buffer;
 
-       if(write(c->socket, bufp, length) < 0) {
-               syslog(LOG_ERR, _("Sending meta data to %s (%s) failed: %s"), c->name,
-                          c->hostname, strerror(errno));
-               return -1;
+       while(length) {
+               result = write(c->socket, bufp, length);
+               if(result <= 0) {
+                       if(errno == EINTR)
+                               continue;
+                       syslog(LOG_ERR, _("Sending meta data to %s (%s) failed: %s"), c->name,
+                                  c->hostname, strerror(errno));
+                       return -1;
+               }
+               bufp += result;
+               length -= result;
        }
-
+       
        return 0;
 }
 
-void broadcast_meta(connection_t * from, char *buffer, int length)
+void broadcast_meta(connection_t *from, char *buffer, int length)
 {
        avl_node_t *node;
        connection_t *c;
@@ -82,9 +90,10 @@ void broadcast_meta(connection_t * from, char *buffer, int length)
        }
 }
 
-int receive_meta(connection_t * c)
+int receive_meta(connection_t *c)
 {
-       int x, l = sizeof(x);
+       int x;
+       socklen_t l = sizeof(x);
        int oldlen, i;
        int lenin, reqlen;
        int decrypted = 0;
@@ -136,8 +145,7 @@ int receive_meta(connection_t * c)
                /* Decrypt */
 
                if(c->status.decryptin && !decrypted) {
-                       EVP_DecryptUpdate(c->inctx, inbuf, &lenin, c->buffer + oldlen,
-                                                         lenin);
+                       EVP_DecryptUpdate(c->inctx, inbuf, &lenin, c->buffer + oldlen, lenin);
                        memcpy(c->buffer + oldlen, inbuf, lenin);
                        decrypted = 1;
                }