X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=http_send.c;h=6a4d24ddea6405805a3ea42f3f2029a28af2b549;hb=d4171bf0379c24a15df0281c5328c53087e446f4;hp=7c1ea344e0f96e4ca515b6f797d8384ee1145e65;hpb=22942910d5cf0b5c05bf66bea99890880901ba57;p=paraslash.git diff --git a/http_send.c b/http_send.c index 7c1ea344..6a4d24dd 100644 --- a/http_send.c +++ b/http_send.c @@ -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,