]> git.gag.com Git - debian/amanda/blobdiff - common-src/dgram.c
Imported Upstream version 2.5.1p3
[debian/amanda] / common-src / dgram.c
index 5df3a57a92aead45fef282039b4eec5fbff8a6c4..a4c4ba378f773ae129e6a40525091e8fd8980aeb 100644 (file)
@@ -25,7 +25,7 @@
  *                        University of Maryland at College Park
  */
 /* 
- * $Id: dgram.c,v 1.32 2006/07/05 19:54:20 martinea Exp $
+ * $Id: dgram.c,v 1.32.2.4 2006/10/16 18:23:53 martinea Exp $
  *
  * library routines to marshall/send, recv/unmarshall UDP packets
  */
@@ -57,10 +57,6 @@ dgram_bind(
     socklen_t len;
     struct sockaddr_in name;
     int save_errno;
-#if defined(USE_REUSEADDR)
-    const int on = 1;
-    int r;
-#endif
 
     *portp = (in_port_t)0;
     if((s = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {
@@ -84,16 +80,6 @@ dgram_bind(
     name.sin_family = (sa_family_t)AF_INET;
     name.sin_addr.s_addr = INADDR_ANY;
 
-#ifdef USE_REUSEADDR
-    r = setsockopt(s, SOL_SOCKET, SO_REUSEADDR,
-       (void *)&on, (socklen_t)sizeof(on));
-    if (r < 0) {
-       dbprintf(("%s: dgram_bind: setsockopt(SO_REUSEADDR) failed: %s\n",
-                 debug_prefix(NULL),
-                 strerror(errno)));
-    }
-#endif
-
     /*
      * If a port range was specified, we try to get a port in that
      * range first.  Next, we try to get a reserved port.  If that
@@ -331,8 +317,7 @@ dgram_recv(
     to.tv_usec = 0;
 
     dbprintf(("%s: dgram_recv(dgram=%p, timeout=%u, fromaddr=%p)\n",
-               debug_prefix_time(NULL), timeout, fromaddr));
-    dump_sockaddr(fromaddr);
+               debug_prefix_time(NULL), dgram, timeout, fromaddr));
     
     nfound = (ssize_t)select(sock+1, &ready, NULL, NULL, &to);
     if(nfound <= 0 || !FD_ISSET(sock, &ready)) {
@@ -376,6 +361,7 @@ dgram_recv(
        errno = save_errno;
        return -1;
     }
+    dump_sockaddr(fromaddr);
     dgram->len = (size_t)size;
     dgram->data[size] = '\0';
     dgram->cur = dgram->data;
@@ -411,15 +397,15 @@ printf_arglist_function1(int dgram_cat, dgram_t *, dgram, const char *, fmt)
     arglist_start(argp, fmt);
     len = vsnprintf(dgram->cur, (size_t)bufsize, fmt, argp);
     arglist_end(argp);
-    if((ssize_t)len > bufsize) {
+    if(len < 0) {
+       return -1;
+    } else if((ssize_t)len > bufsize) {
        dgram->len = sizeof(dgram->data);
        dgram->cur = dgram->data + dgram->len;
        return -1;
     }
     else {
-       arglist_start(argp, fmt);
-       dgram->len += vsnprintf(dgram->cur, (size_t)bufsize, fmt, argp);
-       arglist_end(argp);
+       dgram->len += len;
        dgram->cur = dgram->data + dgram->len;
     }
     return 0;