X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fuhttpd.git;a=blobdiff_plain;f=client.c;h=a28067e193b87d1bf41028f4587a6f249cd201b1;hp=e1c8c55d453aeb4718b1c5a851276523fadb5ce7;hb=8515c92b9302b258be10df5c5cee240dd4b137f6;hpb=d779a5dc390b9c6e1ed32cdd287997f81ee88d37;ds=inline diff --git a/client.c b/client.c index e1c8c55..a28067e 100644 --- a/client.c +++ b/client.c @@ -63,6 +63,7 @@ static void uh_dispatch_done(struct client *cl) if (cl->dispatch_free) cl->dispatch_free(cl); cl->dispatch_free = NULL; + cl->dispatch_close_fds = NULL; } void uh_request_done(struct client *cl) @@ -329,3 +330,16 @@ void uh_accept_client(int fd) n_clients++; cl->id = client_id++; } + +void uh_close_fds(void) +{ + struct client *cl; + + uloop_done(); + uh_close_listen_fds(); + list_for_each_entry(cl, &clients, list) { + close(cl->sfd.fd.fd); + if (cl->dispatch_close_fds) + cl->dispatch_close_fds(cl); + } +}