]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - http_send.c
Get rid of sender->status.
[paraslash.git] / http_send.c
index 0cab7420322e9a347119ee47210a702e88be0261..6a4d24ddea6405805a3ea42f3f2029a28af2b549 100644 (file)
@@ -197,6 +197,8 @@ static void http_post_select(fd_set *rfds, fd_set *wfds)
        struct http_client *hc, *tmp;
        const char *err_msg;
 
+       if (server_fd < 0)
+               return;
        list_for_each_entry_safe(hc, tmp, &clients, node) {
                i++;
 //             PARA_DEBUG_LOG("handling client %d: %s\n", i, remote_name(hc->fd));
@@ -307,14 +309,13 @@ static void http_pre_select(int *max_fileno, fd_set *rfds, fd_set *wfds)
        }
 }
 
-static int open_tcp_port(int port)
+static int http_open(int port)
 {
        int ret;
 
        server_fd = para_listen(AF_UNSPEC, IPPROTO_TCP, port);
        if (server_fd < 0) {
                http_shutdown_clients();
-               self->status = SENDER_OFF;
                return server_fd;
        }
        ret = mark_fd_nonblocking(server_fd);
@@ -322,27 +323,26 @@ static int open_tcp_port(int port)
                PARA_EMERG_LOG("%s\n", para_strerror(-ret));
                exit(EXIT_FAILURE);
        }
-       self->status = SENDER_ON;
        add_close_on_fork_list(server_fd);
        return 1;
 }
 
 static int http_com_on(__a_unused struct sender_command_data *scd)
 {
-       if (self->status == SENDER_ON)
+       if (server_fd >= 0)
                return 1;
-       return open_tcp_port(conf.http_port_arg);
+       return http_open(conf.http_port_arg);
 }
 
 static int http_com_off(__a_unused struct sender_command_data *scd)
 {
-       self->status = SENDER_OFF;
-       if (server_fd > 0) {
-               close(server_fd);
-               del_close_on_fork_list(server_fd);
-               server_fd = -1;
-       }
+       if (server_fd < 0)
+               return 1;
+       PARA_NOTICE_LOG("closing http port %d\n", conf.http_port_arg);
+       close(server_fd);
+       del_close_on_fork_list(server_fd);
        http_shutdown_clients();
+       server_fd = -1;
        return 1;
 }
 
@@ -382,7 +382,7 @@ static char *http_info(void)
                "http maximal number of clients: %d%s\n"
                "http connected clients: %s\n"
                "http access %s list: %s\n",
-               (self->status == SENDER_ON)? "on" : "off",
+               (server_fd >= 0)? "on" : "off",
                conf.http_port_arg,
                numclients,
                conf.http_max_clients_arg,
@@ -431,6 +431,6 @@ void http_send_init(struct sender *s)
        self = s;
        acl_init(&http_acl, conf.http_access_arg, conf.http_access_given);
        if (!conf.http_no_autostart_given)
-               open_tcp_port(conf.http_port_arg); /* ignore errors */
+               http_open(conf.http_port_arg); /* ignore errors */
        PARA_DEBUG_LOG("%s", "http sender init complete\n");
 }