]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - send_common.c
send_common: Improve error diagnostics of generic_com_on().
[paraslash.git] / send_common.c
index 4bb50ce58d7198c4aaf6bdf456b2c5c04aaed442..5a9ddf641796931e70accd1fa1ae3a74bfbff57d 100644 (file)
@@ -206,28 +206,38 @@ void generic_com_deny(struct sender_command_data *scd,
  * Activate a paraslash sender.
  *
  * \param ss The sender to activate.
  * 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)
 {
        int fd, ret;
 
        if (ss->listen_fd >= 0)
-               return 1;
+               return;
        ret = para_listen_simple(protocol, ss->port);
        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) {
        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);
                close(fd);
-               return ret;
+               return;
        }
        add_close_on_fork_list(fd);
        ss->listen_fd = ret;
        }
        add_close_on_fork_list(fd);
        ss->listen_fd = ret;
-       return 1;
+       return;
 }
 
 /**
 }
 
 /**