gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r14346 - gnunet/src/transport


From: gnunet
Subject: [GNUnet-SVN] r14346 - gnunet/src/transport
Date: Fri, 4 Feb 2011 16:42:46 +0100

Author: nevans
Date: 2011-02-04 16:42:45 +0100 (Fri, 04 Feb 2011)
New Revision: 14346

Modified:
   gnunet/src/transport/plugin_transport_unix.c
Log:
better memory usage, fix leak

Modified: gnunet/src/transport/plugin_transport_unix.c
===================================================================
--- gnunet/src/transport/plugin_transport_unix.c        2011-02-04 15:36:18 UTC 
(rev 14345)
+++ gnunet/src/transport/plugin_transport_unix.c        2011-02-04 15:42:45 UTC 
(rev 14346)
@@ -487,7 +487,7 @@
   ssize_t sent;
   const void *sb;
   size_t sbs;
-  struct sockaddr_un *un;
+  struct sockaddr_un un;
   size_t slen;
 
   if (send_handle == NULL)
@@ -522,18 +522,18 @@
           sizeof (struct GNUNET_PeerIdentity));
   memcpy (&message[1], msgbuf, msgbuf_size);
 
-  un = GNUNET_malloc (sizeof (struct sockaddr_un));
-  un->sun_family = AF_UNIX;
+  memset(&un, 0, sizeof(un));
+  un.sun_family = AF_UNIX;
   slen = strlen (addr) + 1;
   sent = 0;
-  GNUNET_assert(slen < sizeof(un->sun_path));
-  memcpy (un->sun_path, addr, slen);
-  un->sun_path[slen] = '\0';
+  GNUNET_assert(slen < sizeof(un.sun_path));
+  memcpy (un.sun_path, addr, slen);
+  un.sun_path[slen] = '\0';
 #if LINUX
-  un->sun_path[0] = '\0';
+  un.sun_path[0] = '\0';
 #endif
   slen += sizeof (sa_family_t);
-  sb = (struct sockaddr*) un;
+  sb = (struct sockaddr*) &un;
   sbs = slen;
 
   sent = GNUNET_NETWORK_socket_sendto(send_handle, message, ssize, sb, sbs);
@@ -574,14 +574,9 @@
                   (sent < 0) ? STRERROR (errno) : "ok");
 #endif
       GNUNET_log_strerror (GNUNET_ERROR_TYPE_DEBUG, "send");
+      GNUNET_free(message);
       return ssize;
     }
-  if (incoming_retry_context != NULL)
-    {
-      GNUNET_free(incoming_retry_context->msg);
-      GNUNET_free(incoming_retry_context->addr);
-      GNUNET_free(incoming_retry_context);
-    }
 #if DEBUG_UNIX
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
              "UNIX transmit %u-byte message to %s (%d: %s)\n",
@@ -600,6 +595,13 @@
         }
     }
 
+  if (incoming_retry_context != NULL)
+    {
+      GNUNET_free(incoming_retry_context->msg);
+      GNUNET_free(incoming_retry_context->addr);
+      GNUNET_free(incoming_retry_context);
+    }
+
   GNUNET_free (message);
   return sent;
 }
@@ -837,22 +839,22 @@
   struct sockaddr *serverAddr;
   socklen_t addrlen;
   int sockets_created;
-  struct sockaddr_un *un;
+  struct sockaddr_un un;
   size_t slen;
 
-  un = GNUNET_malloc (sizeof (struct sockaddr_un));
-  un->sun_family = AF_UNIX;
+  memset(&un, 0, sizeof(un));
+  un.sun_family = AF_UNIX;
   slen = strlen (plugin->unix_socket_path) + 1;
 
-  GNUNET_assert(slen < sizeof(un->sun_path));
-  memcpy (un->sun_path, plugin->unix_socket_path, slen);
-  un->sun_path[slen] = '\0';
+  GNUNET_assert(slen < sizeof(un.sun_path));
+  memcpy (un.sun_path, plugin->unix_socket_path, slen);
+  un.sun_path[slen] = '\0';
   slen += sizeof (sa_family_t);
-  serverAddr = (struct sockaddr*) un;
+  serverAddr = (struct sockaddr*) &un;
   addrlen = slen;
   sockets_created = 0;
 #if LINUX
-  un->sun_path[0] = '\0';
+  un.sun_path[0] = '\0';
 #endif
 
   plugin->unix_sock.desc = GNUNET_NETWORK_socket_create (AF_UNIX, SOCK_DGRAM, 
0);
@@ -871,7 +873,7 @@
 #endif
        }
       else
-        GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Bound to `%s'\n", 
&un->sun_path[0]);
+        GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Bound to `%s'\n", 
&un.sun_path[0]);
       if (plugin->unix_sock.desc != NULL)
         sockets_created++;
     }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]