send_common: Combine generic_com_on() and open_sender().
[paraslash.git] / send_common.c
index 71c33b044cc3b71cdcd149bad81ed7ff133f480e..4bb50ce58d7198c4aaf6bdf456b2c5c04aaed442 100644 (file)
 /** Clients will be kicked if there are more than that many bytes pending. */
 #define MAX_CQ_BYTES 40000
 
-/**
- * Open a passive socket of given layer4 type.
- *
- * Set the resulting file descriptor to nonblocking mode and add it to the list
- * of fds that are being closed in the child process when the server calls
- * fork().
- *
- * \param l4type The transport-layer protocol.
- * \param port The port number.
- *
- * \return The listening fd on success, negative on errors.
- */
-static int open_sender(unsigned l4type, int port)
-{
-       int fd, ret = para_listen_simple(l4type, port);
-
-       if (ret < 0)
-               return ret;
-       fd = ret;
-       ret = mark_fd_nonblocking(fd);
-       if (ret < 0) {
-               close(fd);
-               return ret;
-       }
-       add_close_on_fork_list(fd);
-       return fd;
-}
-
 /**
  * Shut down a client connected to a paraslash sender.
  *
@@ -240,13 +212,20 @@ void generic_com_deny(struct sender_command_data *scd,
  */
 int generic_com_on(struct sender_status *ss, unsigned protocol)
 {
-       int ret;
+       int fd, ret;
 
        if (ss->listen_fd >= 0)
                return 1;
-       ret = open_sender(protocol, ss->port);
+       ret = para_listen_simple(protocol, ss->port);
        if (ret < 0)
                return ret;
+       fd = ret;
+       ret = mark_fd_nonblocking(fd);
+       if (ret < 0) {
+               close(fd);
+               return ret;
+       }
+       add_close_on_fork_list(fd);
        ss->listen_fd = ret;
        return 1;
 }