Commit 78b29587 authored by Youness Alaoui's avatar Youness Alaoui

Fix tcp-bsd/udp-bsd coding style, add robustness and remove use of name_len

parent c41021da
...@@ -87,12 +87,11 @@ NiceSocket * ...@@ -87,12 +87,11 @@ NiceSocket *
nice_tcp_bsd_socket_new (GMainContext *ctx, NiceAddress *addr) nice_tcp_bsd_socket_new (GMainContext *ctx, NiceAddress *addr)
{ {
struct sockaddr_storage name; struct sockaddr_storage name;
socklen_t name_len = sizeof (name);
NiceSocket *sock; NiceSocket *sock;
TcpPriv *priv; TcpPriv *priv;
GSocket *gsock = NULL; GSocket *gsock = NULL;
GError *gerr = NULL; GError *gerr = NULL;
boolean gret; gboolean gret = FALSE;
GSocketAddress *gaddr; GSocketAddress *gaddr;
if (addr == NULL) { if (addr == NULL) {
...@@ -129,44 +128,34 @@ nice_tcp_bsd_socket_new (GMainContext *ctx, NiceAddress *addr) ...@@ -129,44 +128,34 @@ nice_tcp_bsd_socket_new (GMainContext *ctx, NiceAddress *addr)
} }
/* GSocket: All socket file descriptors are set to be close-on-exec. */ /* GSocket: All socket file descriptors are set to be close-on-exec. */
g_socket_set_blocking(gsock, false); g_socket_set_blocking (gsock, false);
gaddr = g_socket_address_new_from_native (&name, sizeof (name));
name_len = name.ss_family == AF_INET? sizeof (struct sockaddr_in) : if (gaddr != NULL) {
sizeof(struct sockaddr_in6); gret = g_socket_connect (gsock, gaddr, NULL, &gerr);
gaddr = g_socket_address_new_from_native(&name, name_len); g_object_unref (gaddr);
}
gret = g_socket_connect(gsock, gaddr, NULL, &gerr);
g_object_unref(gaddr);
if(gret == FALSE) if (gret == FALSE) {
{ if (g_error_matches (gerr, G_IO_ERROR, G_IO_ERROR_PENDING) == FALSE) {
if(g_error_matches(gerr, G_IO_ERROR, G_IO_ERROR_PENDING) == FALSE) g_socket_close (gsock, NULL);
{ g_object_unref (gsock);
g_socket_close(gsock, NULL);
g_object_unref(gsock);
g_slice_free (NiceSocket, sock); g_slice_free (NiceSocket, sock);
return NULL; return NULL;
} }
g_error_free(gerr); g_error_free(gerr);
} }
gaddr = g_socket_get_local_address (gsock, NULL);
if (gaddr == NULL ||
gaddr = g_socket_get_local_address(gsock, NULL); !g_socket_address_to_native (gaddr, &name, sizeof (name), NULL)) {
if(gaddr == NULL)
{
g_slice_free (NiceSocket, sock); g_slice_free (NiceSocket, sock);
g_socket_close (gsock, NULL); g_socket_close (gsock, NULL);
g_object_unref (gsock); g_object_unref (gsock);
return NULL; return NULL;
} }
g_object_unref (gaddr);
name_len = name.ss_family == AF_INET? sizeof (struct sockaddr_in) :
sizeof(struct sockaddr_in6);
g_socket_address_to_native(gaddr, &name, name_len, NULL);
g_object_unref(gaddr);
nice_address_set_from_sockaddr (&sock->addr, (struct sockaddr *)&name); nice_address_set_from_sockaddr (&sock->addr, (struct sockaddr *)&name);
......
...@@ -150,11 +150,9 @@ socket_close (NiceSocket *sock) ...@@ -150,11 +150,9 @@ socket_close (NiceSocket *sock)
static gint static gint
socket_recv (NiceSocket *sock, NiceAddress *from, guint len, gchar *buf) socket_recv (NiceSocket *sock, NiceAddress *from, guint len, gchar *buf)
{ {
gint recvd;
struct sockaddr_storage sa;
socklen_t from_len = sizeof (sa);
GSocketAddress *gaddr = NULL; GSocketAddress *gaddr = NULL;
GError *gerr = NULL; GError *gerr = NULL;
gint recvd;
recvd = g_socket_receive_from (sock->fileno, &gaddr, buf, len, NULL, &gerr); recvd = g_socket_receive_from (sock->fileno, &gaddr, buf, len, NULL, &gerr);
...@@ -166,14 +164,16 @@ socket_recv (NiceSocket *sock, NiceAddress *from, guint len, gchar *buf) ...@@ -166,14 +164,16 @@ socket_recv (NiceSocket *sock, NiceAddress *from, guint len, gchar *buf)
g_error_free (gerr); g_error_free (gerr);
} }
if (recvd > 0) { if (recvd > 0 && from != NULL && gaddr != NULL) {
if(gaddr != NULL) { struct sockaddr_storage sa;
g_socket_address_to_native(gaddr, &sa, from_len, NULL);
g_object_unref(gaddr); g_socket_address_to_native (gaddr, &sa, sizeof (sa), NULL);
}
nice_address_set_from_sockaddr (from, (struct sockaddr *)&sa); nice_address_set_from_sockaddr (from, (struct sockaddr *)&sa);
} }
if (gaddr != NULL)
g_object_unref (gaddr);
return recvd; return recvd;
} }
...@@ -182,19 +182,16 @@ socket_send (NiceSocket *sock, const NiceAddress *to, ...@@ -182,19 +182,16 @@ socket_send (NiceSocket *sock, const NiceAddress *to,
guint len, const gchar *buf) guint len, const gchar *buf)
{ {
struct sockaddr_storage sa; struct sockaddr_storage sa;
ssize_t sent;
socklen_t name_len = sizeof (sa);
GSocketAddress *gaddr; GSocketAddress *gaddr;
ssize_t sent = -1;
nice_address_copy_to_sockaddr (to, (struct sockaddr *)&sa); nice_address_copy_to_sockaddr (to, (struct sockaddr *)&sa);
gaddr = g_socket_address_new_from_native (&sa, sizeof(sa));
name_len = sa.ss_family == AF_INET? sizeof (struct sockaddr_in) : if (gaddr) {
sizeof(struct sockaddr_in6); sent = g_socket_send_to (sock->fileno, gaddr, buf, len, NULL, NULL);
g_object_unref (gaddr);
gaddr = g_socket_address_new_from_native(&sa, name_len); }
sent = g_socket_send_to(sock->fileno, gaddr, buf, len, NULL, NULL);
g_object_unref(gaddr);
return sent == (ssize_t)len; return sent == (ssize_t)len;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment