]> git.tue.mpg.de Git - paraslash.git/commitdiff
Fix two fd leaks
authorAndre <maan@p133.(none)>
Wed, 12 Jul 2006 15:16:08 +0000 (17:16 +0200)
committerAndre <maan@p133.(none)>
Wed, 12 Jul 2006 15:16:08 +0000 (17:16 +0200)
client_common.c
http_recv.c

index c738079b6b1f92ab47435bfea9eb6185aa52eef2..d13892599cd4b503c50164f9a7010ab40c6d2016 100644 (file)
@@ -295,29 +295,32 @@ int client_open(struct private_client_data *pcd)
        struct hostent *he;
        struct sockaddr_in their_addr;
 
+       pcd->fd = -1;
        ret = get_host_info(pcd->conf.hostname_arg, &he);
        if (ret < 0)
-               goto out;
+               goto err_out;
        /* get new socket */
        ret = get_socket();
        if (ret < 0)
-               goto out;
+               goto err_out;
        pcd->fd = ret;
        /* init their_addr */
        init_sockaddr(&their_addr, pcd->conf.server_port_arg, he);
        ret = para_connect(pcd->fd, &their_addr);
        if (ret < 0)
-               goto out;
+               goto err_out;
        pcd->status = CL_CONNECTED;
        ret = mark_fd_nonblock(pcd->fd);
        if (ret < 0)
-               goto out;
+               goto err_out;
        pcd->task.pre_select = client_pre_select;
        pcd->task.post_select = client_post_select;
        pcd->task.private_data = pcd;
        sprintf(pcd->task.status, "client");
        register_task(&pcd->task);
-       ret = 1;
-out:
+       return 1;
+err_out:
+       if (pcd->fd >= 0)
+               close(pcd->fd);
        return ret;
 }
index 386aacbcfc2c447e907e97c3bb630504ff87bdf9..c418af129a0560fdb09e2aa2cf32e1c7b68146ed 100644 (file)
@@ -198,8 +198,10 @@ static int http_recv_open(struct receiver_node *rn)
        PARA_NOTICE_LOG("connecting to %s:%d\n", conf->host_arg,
                conf->port_arg);
        ret = para_connect(phd->fd, &their_addr);
-       if (ret < 0)
+       if (ret < 0) {
+               close(phd->fd);
                goto err_out;
+       }
        mark_fd_nonblock(phd->fd);
        phd->status = HTTP_CONNECTED;
        return 1;