X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=dccp_send.c;h=496895a509f15466e7430af454c784a09bc3ce7e;hp=2821b21ca8b96bc4e0d596689473d6e7e7bfcf7d;hb=f5c010bd27e131fca0c2ae58ebdde80e44655dcc;hpb=ac4e01ba1a2f302bf31dd511a7aff8da78660b15 diff --git a/dccp_send.c b/dccp_send.c index 2821b21c..496895a5 100644 --- a/dccp_send.c +++ b/dccp_send.c @@ -21,16 +21,13 @@ #include "error.h" #include "string.h" #include "afh.h" -#include "server.h" #include "net.h" +#include "server.h" #include "list.h" #include "send.h" #include "sched.h" #include "vss.h" #include "fd.h" -#include "close_on_fork.h" -#include "chunk_queue.h" -#include "acl.h" static struct sender_status dccp_sender_status, *dss = &dccp_sender_status; @@ -42,8 +39,11 @@ struct dccp_fec_client { static void dccp_pre_select(int *max_fileno, fd_set *rfds, __a_unused fd_set *wfds) { - if (dss->listen_fd >= 0) - para_fd_set(dss->listen_fd, rfds, max_fileno); + unsigned n; + + FOR_EACH_LISTEN_FD(n, dss) + if (dss->listen_fds[n] >= 0) + para_fd_set(dss->listen_fds[n], rfds, max_fileno); } /** @@ -83,6 +83,12 @@ static void dccp_shutdown_clients(void) dccp_shutdown_client(sc); } +static void dccp_shutdown(void) +{ + dccp_shutdown_clients(); + generic_acl_deplete(&dss->acl); +} + /** * Obtain current MPS according to RFC 4340, sec. 14. */ static int dccp_init_fec(struct sender_client *sc) { @@ -161,7 +167,8 @@ static void dccp_post_select(fd_set *rfds, __a_unused fd_set *wfds) static int dccp_com_on(__a_unused struct sender_command_data *scd) { - return generic_com_on(dss, IPPROTO_DCCP); + generic_com_on(dss, IPPROTO_DCCP); + return 1; } static int dccp_com_off(__a_unused struct sender_command_data *scd) @@ -220,14 +227,11 @@ static char *dccp_status(void) */ static void dccp_send_init(void) { - int ret; - init_sender_status(dss, OPT_RESULT(DCCP_ACCESS), + OPT_RESULT(DCCP_LISTEN_ADDRESS), OPT_UINT32_VAL(DCCP_PORT), OPT_UINT32_VAL(DCCP_MAX_CLIENTS), OPT_GIVEN(DCCP_DEFAULT_DENY)); - ret = generic_com_on(dss, IPPROTO_DCCP); - if (ret < 0) - PARA_ERROR_LOG("%s\n", para_strerror(-ret)); + generic_com_on(dss, IPPROTO_DCCP); } /** @@ -241,7 +245,7 @@ static void dccp_send_init(void) const struct sender dccp_sender = { .name = "dccp", .init = dccp_send_init, - .shutdown = dccp_shutdown_clients, + .shutdown = dccp_shutdown, .pre_select = dccp_pre_select, .post_select = dccp_post_select, .shutdown_clients = dccp_shutdown_clients,