]> git.sesse.net Git - vlc/commitdiff
Fix memory leaks and dummy error messages in net_OpenDgram
authorRémi Denis-Courmont <rem@videolan.org>
Mon, 5 Feb 2007 17:04:55 +0000 (17:04 +0000)
committerRémi Denis-Courmont <rem@videolan.org>
Mon, 5 Feb 2007 17:04:55 +0000 (17:04 +0000)
src/network/udp.c

index 70d18566ba3e651fcd858fd08e711c03465bf8f7..b8c522ea5b810cd6d9eead35be2c6d81db33a061 100644 (file)
@@ -699,38 +699,36 @@ int __net_OpenDgram( vlc_object_t *obj, const char *psz_bind, int i_bind,
             continue;
         }
 
-        struct addrinfo *ptr2;
-        for (ptr2 = rem; ptr2 != NULL; ptr2 = ptr2->ai_next)
+        val = -1;
+        for (struct addrinfo *ptr2 = rem; ptr2 != NULL; ptr2 = ptr2->ai_next)
         {
             if ((ptr2->ai_family != ptr->ai_family)
              || (ptr2->ai_socktype != ptr->ai_socktype)
              || (ptr2->ai_protocol != ptr->ai_protocol))
                 continue;
 
-            if (net_SockAddrIsMulticast (ptr->ai_addr, ptr->ai_addrlen))
+            if (net_SockAddrIsMulticast (ptr->ai_addr, ptr->ai_addrlen)
+              ? net_SourceSubscribe (obj, fd,
+                                     ptr2->ai_addr, ptr2->ai_addrlen,
+                                     ptr->ai_addr, ptr->ai_addrlen)
+              : connect (fd, ptr2->ai_addr, ptr2->ai_addrlen))
             {
-                if (net_SourceSubscribe (obj, fd,
-                                         ptr2->ai_addr, ptr2->ai_addrlen,
-                                         ptr->ai_addr, ptr->ai_addrlen) == 0)
-                    break;
-            }
-            else
-            {
-                if (connect (fd, ptr2->ai_addr, ptr2->ai_addrlen) == 0)
-                    break;
+                msg_Err (obj, "cannot connect to %s port %d: %s",
+                         psz_server, i_server, net_strerror (net_errno));
+                continue;
             }
+            val = fd;
+            break;
         }
 
-        if (ptr2 == NULL)
-        {
-            msg_Err (obj, "cannot connect to %s port %d: %s",
-                     psz_server, i_server, net_strerror (net_errno));
-            close (fd);
-            continue;
-        }
+        if (val != -1)
+            break;
 
-        return fd;
+        close (fd);
     }
 
-    return -1;
+    vlc_freeaddrinfo (rem);
+    vlc_freeaddrinfo (loc);
+    return val;
 }
+