diff options
author | Jakub Adam <jakub.adam@collabora.com> | 2019-07-16 10:53:54 +0200 |
---|---|---|
committer | Jakub Adam <jakub.adam@collabora.com> | 2019-07-19 16:41:57 +0200 |
commit | 318ba4dea6596b7825a71fdb34473549e231f757 (patch) | |
tree | bb2f0bd6a59c5433827e0c1ccbd3f9f93b8b32e9 | |
parent | c2ace8ea13c714a78b6161e8562151f4c3b9520d (diff) | |
download | libnice-318ba4dea6596b7825a71fdb34473549e231f757.tar.gz |
udp-bsd: log source and destination addresses on GSocket send error
-rw-r--r-- | socket/udp-bsd.c | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/socket/udp-bsd.c b/socket/udp-bsd.c index 6d55e15..8f65e76 100644 --- a/socket/udp-bsd.c +++ b/socket/udp-bsd.c @@ -289,19 +289,39 @@ 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()) { + struct sockaddr 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); + 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); + 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; } |