X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=send_common.c;h=5a9ddf641796931e70accd1fa1ae3a74bfbff57d;hp=4bb50ce58d7198c4aaf6bdf456b2c5c04aaed442;hb=2b004fc5dc0c652c6eb4daf84e5875f2c852ca72;hpb=ac9f8fc0b4a20b3ec1d205029ef61321174d15b6 diff --git a/send_common.c b/send_common.c index 4bb50ce5..5a9ddf64 100644 --- a/send_common.c +++ b/send_common.c @@ -206,28 +206,38 @@ void generic_com_deny(struct sender_command_data *scd, * Activate a paraslash sender. * * \param ss The sender to activate. - * \param protocol The symbolic name of the transport-layer protocol. + * \param protocol layer4 type (IPPROTO_TCP or IPPROTO_DCCP). * - * \return Standard. + * This opens a passive socket of given layer4 type, sets the resulting file + * descriptor to nonblocking mode and adds it to the close on fork list. + * + * Errors are logged but otherwise ignored. */ -int generic_com_on(struct sender_status *ss, unsigned protocol) +void generic_com_on(struct sender_status *ss, unsigned protocol) { int fd, ret; if (ss->listen_fd >= 0) - return 1; + return; ret = para_listen_simple(protocol, ss->port); - if (ret < 0) - return ret; + if (ret < 0) { + PARA_ERROR_LOG("could not listen on port %d: %s\n", ss->port, + para_strerror(-ret)); + return; + } fd = ret; ret = mark_fd_nonblocking(fd); if (ret < 0) { + PARA_ERROR_LOG("could not set %s socket fd for port %d to " + "nonblocking mode: %s\n", + protocol == IPPROTO_TCP? "TCP" : "DCCP", ss->port, + para_strerror(-ret)); close(fd); - return ret; + return; } add_close_on_fork_list(fd); ss->listen_fd = ret; - return 1; + return; } /**