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));
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);
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;
}
"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,