Imported Upstream version 0.1.17
[platform/upstream/libnice.git] / socket / udp-bsd.c
index 6d55e15..65974c2 100644 (file)
@@ -136,7 +136,7 @@ nice_udp_bsd_socket_new (NiceAddress *addr)
 
   gaddr = g_socket_get_local_address (gsock, NULL);
   if (gaddr == NULL ||
-      !g_socket_address_to_native (gaddr, &name.addr, sizeof(name), NULL)) {
+      !g_socket_address_to_native (gaddr, &name, sizeof(name), NULL)) {
     g_slice_free (NiceSocket, sock);
     g_socket_close (gsock, NULL);
     g_object_unref (gsock);
@@ -228,7 +228,7 @@ socket_recv_messages (NiceSocket *sock,
         struct sockaddr addr;
       } sa;
 
-      g_socket_address_to_native (gaddr, &sa.addr, sizeof (sa), NULL);
+      g_socket_address_to_native (gaddr, &sa, sizeof (sa), NULL);
       nice_address_set_from_sockaddr (recv_message->from, &sa.addr);
     }
 
@@ -289,19 +289,42 @@ socket_send_message (NiceSocket *sock, const NiceAddress *to,
   len = g_socket_send_message (sock->fileno, gaddr, message->buffers,
       message->n_buffers, NULL, 0, G_SOCKET_MSG_NONE, NULL, &child_error);
 
-  g_clear_object (&gaddr);
-
   if (len < 0) {
     if (g_error_matches (child_error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK)) {
       len = 0;
-    } else {
-      nice_debug_verbose ("%s: udp-bsd socket %p: error: %s", G_STRFUNC, sock,
+    } else if (nice_debug_is_verbose()) {
+      union {
+        struct sockaddr_storage ss;
+        struct sockaddr sa;
+      } sa;
+      GSocketAddress *gsocket;
+      NiceAddress local_addr;
+      NiceAddress remote_addr;
+      char remote_addr_str[INET6_ADDRSTRLEN];
+      char local_addr_str[INET6_ADDRSTRLEN];
+
+      g_socket_address_to_native (gaddr, &sa, sizeof (sa), NULL);
+      nice_address_set_from_sockaddr (&remote_addr, &sa.sa);
+      nice_address_to_string (&remote_addr, remote_addr_str);
+
+      gsocket = g_socket_get_local_address (sock->fileno, NULL);
+      g_socket_address_to_native (gsocket, &sa, sizeof (sa), NULL);
+      nice_address_set_from_sockaddr (&local_addr, &sa.sa);
+      nice_address_to_string (&local_addr, local_addr_str);
+      g_object_unref (gsocket);
+
+      nice_debug_verbose ("%s: udp-bsd socket %p %s:%u -> %s:%u: error: %s",
+          G_STRFUNC, sock,
+          local_addr_str, nice_address_get_port (&local_addr),
+          remote_addr_str, nice_address_get_port (&remote_addr),
           child_error->message);
     }
 
     g_error_free (child_error);
   }
 
+  g_clear_object (&gaddr);
+
   return len;
 }