Get rid of sender->status.
[paraslash.git] / http_send.c
index 7c1ea34..6a4d24d 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));
@@ -314,7 +316,6 @@ static int http_open(int port)
        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 http_open(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 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,