dccp_send.c: Fix a header sending bug.
authorAndre Noll <maan@systemlinux.org>
Sat, 2 Feb 2008 11:20:22 +0000 (12:20 +0100)
committerAndre Noll <maan@systemlinux.org>
Sat, 2 Feb 2008 11:20:22 +0000 (12:20 +0100)
If the dccp sender is asked to send out an empty chunk, it
returns immediately without doing anything. However, we
might want to send the audio file header or the queued chunks
in this case. So always loop over all connected clients to see
if we can send something.

Moreover, if we are not listending on the dccp port, there can
not be any dccp clients, so the loop over all clients will be
an empty loop. Thus we may skip the initial check for an early
return completely.

dccp_send.c

index b1e2f48..55454aa 100644 (file)
@@ -189,9 +189,6 @@ static void dccp_send(long unsigned current_chunk,
        int ret;
        char *header_buf;
 
-       if (listen_fd < 0 || !len)
-               return;
-
        list_for_each_entry_safe(dc, tmp, &clients, node) {
                if (!dc->header_sent && current_chunk) {
                        size_t header_len;
@@ -207,6 +204,8 @@ static void dccp_send(long unsigned current_chunk,
                        dccp_shutdown_client(dc);
                        continue;
                }
+               if (!len)
+                       continue;
 //             PARA_DEBUG_LOG("writing %d bytes to fd %d\n", len, dc->fd);
                ret = dccp_write(dc->fd, buf, len);
                if (ret < 0) {