Remove the "to" parameter from NiceOutputMessage
authorOlivier Crête <olivier.crete@collabora.com>
Fri, 31 Jan 2014 01:38:15 +0000 (20:38 -0500)
committerOlivier Crête <olivier.crete@collabora.com>
Fri, 31 Jan 2014 06:49:08 +0000 (01:49 -0500)
We never send multiple messages to separate targets in practice, so
this will simplify the code

14 files changed:
agent/agent.c
agent/agent.h
agent/outputstream.c
socket/http.c
socket/pseudossl.c
socket/socket.c
socket/socket.h
socket/socks5.c
socket/tcp-bsd.c
socket/tcp-turn.c
socket/turn.c
socket/udp-bsd.c
tests/test-bsd.c
tests/test-send-recv.c

index 986dfb8..db88f7e 100644 (file)
@@ -1316,10 +1316,9 @@ pseudo_tcp_socket_write_packet (PseudoTcpSocket *socket,
     local_buf.size = len;
     local_message.buffers = &local_buf;
     local_message.n_buffers = 1;
-    local_message.to = addr;
     local_message.length = len;
 
-    if (nice_socket_send_messages (sock, &local_message, 1)) {
+    if (nice_socket_send_messages (sock, addr, &local_message, 1)) {
       return WR_SUCCESS;
     }
   } else {
@@ -3264,7 +3263,6 @@ nice_agent_send_messages_nonblocking (
   } else if (component->selected_pair.local != NULL) {
     NiceSocket *sock;
     NiceAddress *addr;
-    guint i;
 
 #ifndef NDEBUG
     gchar tmpbuf[INET6_ADDRSTRLEN];
@@ -3278,13 +3276,8 @@ nice_agent_send_messages_nonblocking (
     sock = component->selected_pair.local->sockptr;
     addr = &component->selected_pair.remote->addr;
 
-    /* Set the destination address. FIXME: This is ugly. */
-    for (i = 0; i < n_messages; i++) {
-      NiceOutputMessage *message = (NiceOutputMessage *) &messages[i];
-      message->to = addr;
-    }
-
-    n_sent_messages = nice_socket_send_messages (sock, messages, n_messages);
+    n_sent_messages = nice_socket_send_messages (sock, addr, messages,
+        n_messages);
 
     if (n_sent_messages < 0) {
       g_set_error (&child_error, G_IO_ERROR, G_IO_ERROR_FAILED,
@@ -3327,7 +3320,7 @@ nice_agent_send (
   const gchar *buf)
 {
   GOutputVector local_buf = { buf, len };
-  NiceOutputMessage local_message = { &local_buf, 1, NULL, len };
+  NiceOutputMessage local_message = { &local_buf, 1, len };
   gint n_sent_messages;
 
   n_sent_messages = nice_agent_send_messages_nonblocking (agent, stream_id,
index 3f34506..cc025ec 100644 (file)
@@ -176,14 +176,12 @@ typedef struct {
  * which contain data to transmit for this message
  * @n_buffers: number of #GOutputVectors in @buffers, or -1 to indicate @buffers
  * is %NULL-terminated
- * @to: (allow-none): address of the peer to transmit the message to, or %NULL
- * to use the default address for the outbound socket
  * @length: total number of valid bytes contiguously stored in @buffers
  *
- * Represents a single message to transmit on the network. For reliable
- * connections, this is essentially just an array of buffers (specifically,
- * @to can be ignored). for non-reliable connections, it represents a single
- * packet to send to the OS.
+ * Represents a single message to transmit on the network. For
+ * reliable connections, this is essentially just an array of
+ * buffer. for non-reliable connections, it represents a single packet
+ * to send to the OS.
  *
  * @n_buffers may be -1 to indicate that @buffers is terminated by a
  * #GOutputVector with a %NULL buffer pointer.
@@ -199,7 +197,6 @@ typedef struct {
 typedef struct {
   GOutputVector *buffers;
   gint n_buffers;
-  const NiceAddress *to;
   gsize length;
 } NiceOutputMessage;
 
index f96e190..f8109b6 100644 (file)
@@ -403,9 +403,7 @@ nice_output_stream_write (GOutputStream *stream, const void *buffer, gsize count
 
   do {
     GOutputVector local_buf = { (const guint8 *) buffer + len, count - len };
-    NiceOutputMessage local_message = {
-      &local_buf, 1, NULL, count - len
-    };
+    NiceOutputMessage local_message = {&local_buf, 1, count - len};
 
     /* Have to unlock while calling into the agent because
      * it will take the agent lock which will cause a deadlock if one of
@@ -525,7 +523,7 @@ nice_output_stream_write_nonblocking (GPollableOutputStream *stream,
   NiceOutputStreamPrivate *priv = NICE_OUTPUT_STREAM (stream)->priv;
   NiceAgent *agent;  /* owned */
   GOutputVector local_buf = { buffer, count };
-  NiceOutputMessage local_message = { &local_buf, 1, NULL, count };
+  NiceOutputMessage local_message = { &local_buf, 1, count };
   gint n_sent_messages;
 
   /* Closed streams are not writeable. */
index c0ec4a8..e2cde3e 100644 (file)
@@ -92,12 +92,12 @@ struct to_be_sent {
 static void socket_close (NiceSocket *sock);
 static gint socket_recv_messages (NiceSocket *sock,
     NiceInputMessage *recv_messages, guint n_recv_messages);
-static gint socket_send_messages (NiceSocket *sock,
+static gint socket_send_messages (NiceSocket *sock, const NiceAddress *to,
     const NiceOutputMessage *messages, guint n_messages);
 static gboolean socket_is_reliable (NiceSocket *sock);
 
-static void add_to_be_sent (NiceSocket *sock, const NiceOutputMessage *messages,
-    guint n_messages);
+static void add_to_be_sent (NiceSocket *sock, const NiceAddress *to,
+    const NiceOutputMessage *messages, guint n_messages);
 static void free_to_be_sent (struct to_be_sent *tbs);
 
 
@@ -165,10 +165,9 @@ nice_http_socket_new (NiceSocket *base_socket,
       local_bufs.size = strlen (msg);
       local_messages.buffers = &local_bufs;
       local_messages.n_buffers = 1;
-      local_messages.to = NULL;
       local_messages.length = local_bufs.size;
 
-      nice_socket_send_messages (priv->base_socket, &local_messages, 1);
+      nice_socket_send_messages (priv->base_socket, NULL, &local_messages, 1);
       priv->state = HTTP_STATE_INIT;
       g_free (msg);
     }
@@ -547,8 +546,7 @@ retry:
 
         /* Send the pending data */
         while ((tbs = g_queue_pop_head (&priv->send_queue))) {
-          nice_socket_send (priv->base_socket, &tbs->to,
-              tbs->length, tbs->buf);
+          nice_socket_send (priv->base_socket, &tbs->to, tbs->length, tbs->buf);
           g_free (tbs->buf);
           g_slice_free (struct to_be_sent, tbs);
         }
@@ -576,8 +574,8 @@ retry:
 }
 
 static gint
-socket_send_messages (NiceSocket *sock, const NiceOutputMessage *messages,
-    guint n_messages)
+socket_send_messages (NiceSocket *sock, const NiceAddress *to,
+    const NiceOutputMessage *messages, guint n_messages)
 {
   HttpPriv *priv = sock->priv;
 
@@ -586,11 +584,12 @@ socket_send_messages (NiceSocket *sock, const NiceOutputMessage *messages,
     if (!priv->base_socket)
       return -1;
 
-    return nice_socket_send_messages (priv->base_socket, messages, n_messages);
+    return nice_socket_send_messages (priv->base_socket, to, messages,
+        n_messages);
   } else if (priv->state == HTTP_STATE_ERROR) {
     return -1;
   } else {
-    add_to_be_sent (sock, messages, n_messages);
+    add_to_be_sent (sock, to, messages, n_messages);
   }
 
   return n_messages;
@@ -605,8 +604,8 @@ socket_is_reliable (NiceSocket *sock)
 
 
 static void
-add_to_be_sent (NiceSocket *sock, const NiceOutputMessage *messages,
-    guint n_messages)
+add_to_be_sent (NiceSocket *sock, const NiceAddress *to,
+    const NiceOutputMessage *messages, guint n_messages)
 {
   HttpPriv *priv = sock->priv;
   guint i;
@@ -628,8 +627,8 @@ add_to_be_sent (NiceSocket *sock, const NiceOutputMessage *messages,
     tbs = g_slice_new0 (struct to_be_sent);
     tbs->buf = g_malloc (message->length);
     tbs->length = message->length;
-    if (message->to)
-      tbs->to = *message->to;
+    if (to)
+      tbs->to = *to;
     g_queue_push_tail (&priv->send_queue, tbs);
 
     for (j = 0;
index 005bdec..8128719 100644 (file)
@@ -91,12 +91,12 @@ static const gchar SSL_CLIENT_HANDSHAKE[] = {
 static void socket_close (NiceSocket *sock);
 static gint socket_recv_messages (NiceSocket *sock,
     NiceInputMessage *recv_messages, guint n_recv_messages);
-static gint socket_send_messages (NiceSocket *sock,
+static gint socket_send_messages (NiceSocket *sock, const NiceAddress *to,
     const NiceOutputMessage *messages, guint n_messages);
 static gboolean socket_is_reliable (NiceSocket *sock);
 
-static void add_to_be_sent (NiceSocket *sock, const NiceOutputMessage *messages,
-    guint n_messages);
+static void add_to_be_sent (NiceSocket *sock, const NiceAddress *to,
+    const NiceOutputMessage *messages, guint n_messages);
 static void free_to_be_sent (struct to_be_sent *tbs);
 
 
@@ -190,8 +190,8 @@ socket_recv_messages (NiceSocket *sock,
 }
 
 static gint
-socket_send_messages (NiceSocket *sock, const NiceOutputMessage *messages,
-    guint n_messages)
+socket_send_messages (NiceSocket *sock, const NiceAddress *to,
+    const NiceOutputMessage *messages, guint n_messages)
 {
   PseudoSSLPriv *priv = sock->priv;
 
@@ -201,9 +201,10 @@ socket_send_messages (NiceSocket *sock, const NiceOutputMessage *messages,
     if (priv->base_socket == NULL)
       return FALSE;
 
-    return nice_socket_send_messages (priv->base_socket, messages, n_messages);
+    return nice_socket_send_messages (priv->base_socket, to, messages,
+        n_messages);
   } else {
-    add_to_be_sent (sock, messages, n_messages);
+    add_to_be_sent (sock, to, messages, n_messages);
   }
   return TRUE;
 }
@@ -217,8 +218,8 @@ socket_is_reliable (NiceSocket *sock)
 
 
 static void
-add_to_be_sent (NiceSocket *sock, const NiceOutputMessage *messages,
-    guint n_messages)
+add_to_be_sent (NiceSocket *sock, const NiceAddress *to,
+    const NiceOutputMessage *messages, guint n_messages)
 {
   PseudoSSLPriv *priv = sock->priv;
   guint i;
@@ -234,8 +235,8 @@ add_to_be_sent (NiceSocket *sock, const NiceOutputMessage *messages,
     /* Compact the buffer. */
     tbs->buf = g_malloc (message->length);
     tbs->length = message->length;
-    if (message->to != NULL)
-      tbs->to = *message->to;
+    if (to != NULL)
+      tbs->to = *to;
     g_queue_push_tail (&priv->send_queue, tbs);
 
     for (j = 0;
index 8a7537f..afd5037 100644 (file)
@@ -129,13 +129,13 @@ nice_socket_recv_messages (NiceSocket *sock,
  * Since: 0.1.5
  */
 gint
-nice_socket_send_messages (NiceSocket *sock, const NiceOutputMessage *messages,
-    guint n_messages)
+nice_socket_send_messages (NiceSocket *sock, const NiceAddress *to,
+    const NiceOutputMessage *messages, guint n_messages)
 {
   g_return_val_if_fail (sock != NULL, -1);
   g_return_val_if_fail (n_messages == 0 || messages != NULL, -1);
 
-  return sock->send_messages (sock, messages, n_messages);
+  return sock->send_messages (sock, to, messages, n_messages);
 }
 
 /* Convenience wrapper around nice_socket_send_messages(). Returns the number of
@@ -146,10 +146,10 @@ nice_socket_send (NiceSocket *sock, const NiceAddress *to, gsize len,
     const gchar *buf)
 {
   GOutputVector local_buf = { buf, len };
-  NiceOutputMessage local_message = { &local_buf, 1, to, len };
+  NiceOutputMessage local_message = { &local_buf, 1, len };
   gint ret;
 
-  ret = nice_socket_send_messages (sock, &local_message, 1);
+  ret = sock->send_messages (sock, to, &local_message, 1);
   if (ret == 1)
     return len;
   return ret;
index 3342eb1..54c542e 100644 (file)
@@ -64,8 +64,8 @@ struct _NiceSocket
   gint (*recv_messages) (NiceSocket *sock,
       NiceInputMessage *recv_messages, guint n_recv_messages);
   /* As above, @n_messages may be zero. Iff so, @messages may be %NULL. */
-  gint (*send_messages) (NiceSocket *sock, const NiceOutputMessage *messages,
-      guint n_messages);
+  gint (*send_messages) (NiceSocket *sock, const NiceAddress *to,
+      const NiceOutputMessage *messages, guint n_messages);
   gboolean (*is_reliable) (NiceSocket *sock);
   void (*close) (NiceSocket *sock);
   void *priv;
@@ -77,8 +77,8 @@ nice_socket_recv_messages (NiceSocket *sock,
     NiceInputMessage *recv_messages, guint n_recv_messages);
 
 gint
-nice_socket_send_messages (NiceSocket *sock, const NiceOutputMessage *messages,
-    guint n_messages);
+nice_socket_send_messages (NiceSocket *sock, const NiceAddress *addr,
+    const NiceOutputMessage *messages, guint n_messages);
 gssize
 nice_socket_send (NiceSocket *sock, const NiceAddress *addr, gsize len,
     const gchar *buf);
index fd769f5..563ef25 100644 (file)
@@ -78,12 +78,12 @@ struct to_be_sent {
 static void socket_close (NiceSocket *sock);
 static gint socket_recv_messages (NiceSocket *sock,
     NiceInputMessage *recv_messages, guint n_recv_messages);
-static gint socket_send_messages (NiceSocket *sock,
+static gint socket_send_messages (NiceSocket *sock, const NiceAddress *to,
     const NiceOutputMessage *messages, guint n_messages);
 static gboolean socket_is_reliable (NiceSocket *sock);
 
-static void add_to_be_sent (NiceSocket *sock, const NiceOutputMessage *messages,
-    guint n_messages);
+static void add_to_be_sent (NiceSocket *sock, const NiceAddress *to,
+    const NiceOutputMessage *messages, guint n_messages);
 static void free_to_be_sent (struct to_be_sent *tbs);
 
 
@@ -419,8 +419,8 @@ socket_recv_messages (NiceSocket *sock,
 }
 
 static gint
-socket_send_messages (NiceSocket *sock, const NiceOutputMessage *messages,
-    guint n_messages)
+socket_send_messages (NiceSocket *sock, const NiceAddress *to,
+    const NiceOutputMessage *messages, guint n_messages)
 {
   Socks5Priv *priv = sock->priv;
 
@@ -429,11 +429,12 @@ socket_send_messages (NiceSocket *sock, const NiceOutputMessage *messages,
     if (priv->base_socket == NULL)
       return FALSE;
 
-    return nice_socket_send_messages (priv->base_socket, messages, n_messages);
+    return nice_socket_send_messages (priv->base_socket, to, messages,
+        n_messages);
   } else if (priv->state == SOCKS_STATE_ERROR) {
     return FALSE;
   } else {
-    add_to_be_sent (sock, messages, n_messages);
+    add_to_be_sent (sock, to, messages, n_messages);
   }
   return TRUE;
 }
@@ -447,8 +448,8 @@ socket_is_reliable (NiceSocket *sock)
 
 
 static void
-add_to_be_sent (NiceSocket *sock, const NiceOutputMessage *messages,
-    guint n_messages)
+add_to_be_sent (NiceSocket *sock, const NiceAddress *to,
+    const NiceOutputMessage *messages, guint n_messages)
 {
   Socks5Priv *priv = sock->priv;
   guint i;
@@ -464,8 +465,8 @@ add_to_be_sent (NiceSocket *sock, const NiceOutputMessage *messages,
     /* Compact the buffer. */
     tbs->buf = g_malloc (message->length);
     tbs->length = message->length;
-    if (message->to != NULL)
-      tbs->to = *message->to;
+    if (to != NULL)
+      tbs->to = *to;
     g_queue_push_tail (&priv->send_queue, tbs);
 
     for (j = 0;
index 5792129..64b2d46 100644 (file)
@@ -72,7 +72,7 @@ struct to_be_sent {
 static void socket_close (NiceSocket *sock);
 static gint socket_recv_messages (NiceSocket *sock,
     NiceInputMessage *recv_messages, guint n_recv_messages);
-static gint socket_send_messages (NiceSocket *sock,
+static gint socket_send_messages (NiceSocket *sock, const NiceAddress *to,
     const NiceOutputMessage *messages, guint n_messages);
 static gboolean socket_is_reliable (NiceSocket *sock);
 
@@ -316,8 +316,8 @@ socket_send_message (NiceSocket *sock, const NiceOutputMessage *message)
  * dropped if the bandwidth isn't fast enough. So do not send a message in
  * multiple chunks. */
 static gint
-socket_send_messages (NiceSocket *sock, const NiceOutputMessage *messages,
-    guint n_messages)
+socket_send_messages (NiceSocket *sock, const NiceAddress *to,
+    const NiceOutputMessage *messages, guint n_messages)
 {
   guint i;
 
@@ -389,9 +389,7 @@ socket_send_more (
       if (gerr != NULL &&
           g_error_matches (gerr, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK)) {
         GOutputVector local_buf = { tbs->buf, tbs->length };
-        NiceOutputMessage local_message = {
-          &local_buf, 1, NULL, local_buf.size
-        };
+        NiceOutputMessage local_message = {&local_buf, 1, local_buf.size};
 
         add_to_be_sent (sock, &local_message, 0, TRUE);
         free_to_be_sent (tbs);
@@ -401,9 +399,7 @@ socket_send_more (
       g_error_free (gerr);
     } else if (ret < (int) tbs->length) {
       GOutputVector local_buf = { tbs->buf + ret, tbs->length - ret };
-      NiceOutputMessage local_message = {
-        &local_buf, 1, NULL, local_buf.size
-      };
+      NiceOutputMessage local_message = {&local_buf, 1, local_buf.size};
 
       add_to_be_sent (sock, &local_message, 0, TRUE);
       free_to_be_sent (tbs);
index aa24a24..58be7b1 100644 (file)
@@ -69,7 +69,7 @@ typedef struct {
 static void socket_close (NiceSocket *sock);
 static gint socket_recv_messages (NiceSocket *sock,
     NiceInputMessage *recv_messages, guint n_recv_messages);
-static gint socket_send_messages (NiceSocket *sock,
+static gint socket_send_messages (NiceSocket *sock, const NiceAddress *to,
     const NiceOutputMessage *messages, guint n_messages);
 static gboolean socket_is_reliable (NiceSocket *sock);
 
@@ -223,7 +223,8 @@ socket_recv_messages (NiceSocket *socket,
 }
 
 static gssize
-socket_send_message (NiceSocket *sock, const NiceOutputMessage *message)
+socket_send_message (NiceSocket *sock, const NiceAddress *to,
+    const NiceOutputMessage *message)
 {
   TurnTcpPriv *priv = sock->priv;
   guint8 padbuf[3] = {0, 0, 0};
@@ -249,7 +250,6 @@ socket_send_message (NiceSocket *sock, const NiceOutputMessage *message)
   local_bufs = g_malloc_n (n_bufs + 2, sizeof (GOutputVector));
   local_message.buffers = local_bufs;
   local_message.n_buffers = n_bufs + 2;
-  local_message.to = message->to;
   local_message.length = message->length;
 
   /* Copy the existing buffers across. */
@@ -284,7 +284,7 @@ socket_send_message (NiceSocket *sock, const NiceOutputMessage *message)
     local_message.n_buffers--;
   }
 
-  ret = nice_socket_send_messages (priv->base_socket, &local_message, 1);
+  ret = nice_socket_send_messages (priv->base_socket, to, &local_message, 1);
 
   g_free (local_bufs);
 
@@ -294,8 +294,8 @@ socket_send_message (NiceSocket *sock, const NiceOutputMessage *message)
 }
 
 static gint
-socket_send_messages (NiceSocket *sock, const NiceOutputMessage *messages,
-    guint n_messages)
+socket_send_messages (NiceSocket *sock, const NiceAddress *to,
+    const NiceOutputMessage *messages, guint n_messages)
 {
   guint i;
 
@@ -303,7 +303,7 @@ socket_send_messages (NiceSocket *sock, const NiceOutputMessage *messages,
     const NiceOutputMessage *message = &messages[i];
     gssize len;
 
-    len = socket_send_message (sock, message);
+    len = socket_send_message (sock, to, message);
 
     if (len < 0) {
       /* Error. */
index 3245e3a..46ce895 100644 (file)
@@ -116,7 +116,7 @@ typedef struct {
 static void socket_close (NiceSocket *sock);
 static gint socket_recv_messages (NiceSocket *sock,
     NiceInputMessage *recv_messages, guint n_recv_messages);
-static gint socket_send_messages (NiceSocket *sock,
+static gint socket_send_messages (NiceSocket *sock, const NiceAddress *to,
     const NiceOutputMessage *messages, guint n_messages);
 static gboolean socket_is_reliable (NiceSocket *sock);
 
@@ -548,7 +548,8 @@ socket_dequeue_all_data (TurnPriv *priv, const NiceAddress *to)
 
 
 static gssize
-socket_send_message (NiceSocket *sock, const NiceOutputMessage *message)
+socket_send_message (NiceSocket *sock, const NiceAddress *to,
+    const NiceOutputMessage *message)
 {
   TurnPriv *priv = (TurnPriv *) sock->priv;
   StunMessage msg;
@@ -564,13 +565,13 @@ socket_send_message (NiceSocket *sock, const NiceOutputMessage *message)
 
   for (; i; i = i->next) {
     ChannelBinding *b = i->data;
-    if (nice_address_equal (&b->peer, message->to)) {
+    if (nice_address_equal (&b->peer, to)) {
       binding = b;
       break;
     }
   }
 
-  nice_address_copy_to_sockaddr (message->to, &sa.addr);
+  nice_address_copy_to_sockaddr (to, &sa.addr);
 
   if (binding) {
     if (priv->compatibility == NICE_TURN_SOCKET_COMPATIBILITY_DRAFT9 ||
@@ -608,11 +609,11 @@ socket_send_message (NiceSocket *sock, const NiceOutputMessage *message)
       }
     } else {
       NiceOutputMessage local_message = {
-        message->buffers, message->n_buffers, &priv->server_addr,
-        message->length
+        message->buffers, message->n_buffers, message->length
       };
 
-      ret = nice_socket_send_messages (priv->base_socket, &local_message, 1);
+      ret = nice_socket_send_messages (priv->base_socket, &priv->server_addr,
+          &local_message, 1);
       if (ret == 1)
         return message->length;
       return ret;
@@ -651,7 +652,7 @@ socket_send_message (NiceSocket *sock, const NiceOutputMessage *message)
 
       if (priv->compatibility == NICE_TURN_SOCKET_COMPATIBILITY_GOOGLE &&
           priv->current_binding &&
-          nice_address_equal (&priv->current_binding->peer, message->to)) {
+          nice_address_equal (&priv->current_binding->peer, to)) {
         stun_message_append32 (&msg, STUN_ATTRIBUTE_OPTIONS, 1);
       }
     }
@@ -695,23 +696,22 @@ socket_send_message (NiceSocket *sock, const NiceOutputMessage *message)
 
   if (msg_len > 0) {
     if (priv->compatibility == NICE_TURN_SOCKET_COMPATIBILITY_RFC5766 &&
-        !priv_has_permission_for_peer (priv, message->to)) {
-      if (!priv_has_sent_permission_for_peer (priv, message->to)) {
-        priv_send_create_permission (priv, NULL, message->to);
+        !priv_has_permission_for_peer (priv, to)) {
+      if (!priv_has_sent_permission_for_peer (priv, to)) {
+        priv_send_create_permission (priv, NULL, to);
       }
 
       /* enque data */
       nice_debug ("enqueuing data");
-      socket_enqueue_data(priv, message->to, msg_len, (gchar *)buffer);
+      socket_enqueue_data(priv, to, msg_len, (gchar *)buffer);
 
       return msg_len;
     } else {
       GOutputVector local_buf = { buffer, msg_len };
-      NiceOutputMessage local_message = {
-        &local_buf, 1, &priv->server_addr, msg_len
-      };
+      NiceOutputMessage local_message = {&local_buf, 1, msg_len};
 
-      ret = nice_socket_send_messages (priv->base_socket, &local_message, 1);
+      ret = nice_socket_send_messages (priv->base_socket, &priv->server_addr,
+          &local_message, 1);
       if (ret == 1)
         return msg_len;
       return ret;
@@ -720,15 +720,15 @@ socket_send_message (NiceSocket *sock, const NiceOutputMessage *message)
 
 send:
   /* Error condition pass through to the base socket. */
-  ret = nice_socket_send_messages (priv->base_socket, message, 1);
+  ret = nice_socket_send_messages (priv->base_socket, to, message, 1);
   if (ret == 1)
     return message->length;
   return ret;
 }
 
 static gint
-socket_send_messages (NiceSocket *sock, const NiceOutputMessage *messages,
-    guint n_messages)
+socket_send_messages (NiceSocket *sock, const NiceAddress *to,
+    const NiceOutputMessage *messages, guint n_messages)
 {
   guint i;
 
@@ -736,7 +736,7 @@ socket_send_messages (NiceSocket *sock, const NiceOutputMessage *messages,
     const NiceOutputMessage *message = &messages[i];
     gssize len;
 
-    len = socket_send_message (sock, message);
+    len = socket_send_message (sock, to, message);
 
     if (len < 0) {
       /* Error. */
index b886817..27191f8 100644 (file)
@@ -59,7 +59,7 @@
 static void socket_close (NiceSocket *sock);
 static gint socket_recv_messages (NiceSocket *sock,
     NiceInputMessage *recv_messages, guint n_recv_messages);
-static gint socket_send_messages (NiceSocket *sock,
+static gint socket_send_messages (NiceSocket *sock, const NiceAddress *to,
     const NiceOutputMessage *messages, guint n_messages);
 static gboolean socket_is_reliable (NiceSocket *sock);
 
@@ -225,33 +225,32 @@ socket_recv_messages (NiceSocket *sock,
 }
 
 static gssize
-socket_send_message (NiceSocket *sock, const NiceOutputMessage *message)
+socket_send_message (NiceSocket *sock, const NiceAddress *to,
+    const NiceOutputMessage *message)
 {
   struct UdpBsdSocketPrivate *priv = sock->priv;
   GError *child_error = NULL;
   gssize len;
 
   if (!nice_address_is_valid (&priv->niceaddr) ||
-      !nice_address_equal (&priv->niceaddr, message->to)) {
+      !nice_address_equal (&priv->niceaddr, to)) {
     union {
       struct sockaddr_storage storage;
       struct sockaddr addr;
     } sa;
     GSocketAddress *gaddr;
 
-    g_assert (message->to != NULL);
-
     if (priv->gaddr)
       g_object_unref (priv->gaddr);
 
-    nice_address_copy_to_sockaddr (message->to, &sa.addr);
+    nice_address_copy_to_sockaddr (to, &sa.addr);
     gaddr = g_socket_address_new_from_native (&sa.addr, sizeof(sa));
     priv->gaddr = gaddr;
 
     if (gaddr == NULL)
       return -1;
 
-    priv->niceaddr = *message->to;
+    priv->niceaddr = *to;
   }
 
   len = g_socket_send_message (sock->fileno, priv->gaddr, message->buffers,
@@ -268,8 +267,8 @@ socket_send_message (NiceSocket *sock, const NiceOutputMessage *message)
 }
 
 static gint
-socket_send_messages (NiceSocket *sock, const NiceOutputMessage *messages,
-    guint n_messages)
+socket_send_messages (NiceSocket *sock, const NiceAddress *to,
+    const NiceOutputMessage *messages, guint n_messages)
 {
   guint i;
 
@@ -277,7 +276,7 @@ socket_send_messages (NiceSocket *sock, const NiceOutputMessage *messages,
     const NiceOutputMessage *message = &messages[i];
     gssize len;
 
-    len = socket_send_message (sock, message);
+    len = socket_send_message (sock, to, message);
 
     if (len < 0) {
       /* Error. */
index 937a096..50c2b42 100644 (file)
@@ -144,9 +144,9 @@ test_zero_send_recv (void)
   g_assert_cmpint (socket_recv (sock, &tmp, 0, NULL), ==, 0);
 
   /* And again with messages. */
-  g_assert_cmpint (nice_socket_send_messages (sock,
+  g_assert_cmpint (nice_socket_send_messages (sock, &tmp,
       &local_out_message, 0), ==, 0);
-  g_assert_cmpint (nice_socket_send_messages (sock, NULL, 0), ==, 0);
+  g_assert_cmpint (nice_socket_send_messages (sock, &tmp, NULL, 0), ==, 0);
 
   g_assert_cmpint (nice_socket_recv_messages (sock,
       &local_in_message, 0), ==, 0);
@@ -273,7 +273,6 @@ test_multi_message_recv (guint n_sends, guint n_receives,
 
       send_messages[i].buffers = send_bufs + i * n_bufs_per_message;
       send_messages[i].n_buffers = n_bufs_per_message;
-      send_messages[i].to = &tmp;
       send_messages[i].length = 0;
     }
 
@@ -301,7 +300,7 @@ test_multi_message_recv (guint n_sends, guint n_receives,
 
     /* Send multiple packets. */
     g_assert_cmpint (
-        nice_socket_send_messages (client, send_messages, n_sends), ==,
+        nice_socket_send_messages (client, &tmp, send_messages, n_sends), ==,
         expected_n_sent_messages);
 
     /* Receive things. */
index 4650ba1..8fac9de 100644 (file)
@@ -554,7 +554,6 @@ generate_messages_to_transmit (TestIOStreamThreadData *data,
         generate_buffer_count (test_data->transmit.buffer_count_strategy,
             test_data->transmit_size_rand, buffer_offset);
     message->buffers = g_malloc_n (message->n_buffers, sizeof (GOutputVector));
-    message->to = NULL;
     message->length = 0;
 
     /* Limit the overall message size to the smaller of (n_bytes / n_messages)