]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - dccp_send.c
dccp_senc.c: Check return value of mark_fd_nonblocking().
[paraslash.git] / dccp_send.c
index fd0cbf12f1d5ea3899636b1deaa0c62b5f95d5e9..9de618b2c2f018f428684f658626a1a6e5d00916 100644 (file)
@@ -65,7 +65,7 @@ static void dccp_post_select(fd_set *rfds, __a_unused fd_set *wfds)
        struct dccp_client *dc;
        int ret;
 
-       if (!FD_ISSET(listen_fd, rfds))
+       if (listen_fd < 0 || !FD_ISSET(listen_fd, rfds))
                return;
        ret = para_accept(listen_fd, NULL, 0);
        if (ret < 0) {
@@ -98,8 +98,12 @@ static int dccp_open(void)
        if (ret < 0)
                return ret;
        listen_fd = ret;
+       ret = mark_fd_nonblocking(listen_fd);
+       if (ret < 0) {
+               PARA_EMERG_LOG("%s\n", para_strerror(-ret));
+               exit(EXIT_FAILURE);
+       }
        add_close_on_fork_list(listen_fd);
-       mark_fd_nonblocking(listen_fd);
        return 1;
 }
 
@@ -262,9 +266,6 @@ void dccp_send_init(struct sender *s)
        s->client_cmds[SENDER_DELETE] = NULL;
        self = s;
        ret = dccp_open();
-       if (ret < 0) {
+       if (ret < 0)
                PARA_ERROR_LOG("%s\n", para_strerror(-ret));
-               s->status = SENDER_OFF;
-       } else
-               s->status = SENDER_ON;
 }