udp: fix gst_udp_set_loop_ttl() again
authorJan Smout <jan dot smout at gmail dot com>
Thu, 26 Feb 2009 12:19:31 +0000 (13:19 +0100)
committerWim Taymans <wim.taymans@collabora.co.uk>
Thu, 26 Feb 2009 12:19:31 +0000 (13:19 +0100)
Fix the gst_udp_set_loop_ttl() function that was commented out in a
previous commit. See #573115.

gst/udp/gstudpnetutils.c

index a1588ca..b1f864e 100644 (file)
@@ -115,12 +115,17 @@ beach:
 int
 gst_udp_set_loop_ttl (int sockfd, gboolean loop, int ttl)
 {
+  socklen_t socklen;
+  struct sockaddr_storage addr;
   int ret = -1;
-
-#if 0
   int l = (loop == FALSE) ? 0 : 1;
 
-  switch (addr->ss_family) {
+  socklen = sizeof (addr);
+  if ((ret = getsockname (sockfd, (struct sockaddr *) &addr, &socklen)) < 0) {
+    return ret;
+  }
+
+  switch (addr.ss_family) {
     case AF_INET:
     {
       if ((ret =
@@ -151,7 +156,6 @@ gst_udp_set_loop_ttl (int sockfd, gboolean loop, int ttl)
     default:
       errno = EAFNOSUPPORT;
   }
-#endif
   return ret;
 }