]> git.tuebingen.mpg.de Git - paraslash.git/commitdiff
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 b1e2f48da54d57662fab5b8a18a2190044e77790..55454aaa30c807bcec4f26ad8be6cd01a3bc2085 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) {