Some optimizations
authorFelix Morgner <felix.morgner@gmail.com>
Sun, 1 Jun 2014 14:58:23 +0000 (16:58 +0200)
committerFelix Morgner <felix.morgner@gmail.com>
Sun, 1 Jun 2014 14:58:23 +0000 (16:58 +0200)
Firstly, eliminated a stupid if statement which could be replaced by a
for loop. Secondly, on systems with no IPv6 support, there are no
unnecessary pollfd structures being allocated anymore.

src/server.c

index 4dee126dcf40f5b9cb68b195c5100a037f2f02bb..704f650d880bdc7f57e934d1203fcde115eb2085 100644 (file)
@@ -120,14 +120,8 @@ void Server_runLoop(struct pollfd* pollfds)
                struct sockaddr_storage remote;
                int i;
 
-               if (nofServerSocks == 4) {
-                       pollfds[0].revents = 0;
-                       pollfds[1].revents = 0;
-                       pollfds[2].revents = 0;
-                       pollfds[3].revents = 0;
-               } else {
-                       pollfds[0].revents = 0;
-                       pollfds[1].revents = 0;
+               for(i = 0; i < nofServerSocks; i++) {
+                       pollfds[i].revents = 0;
                }
 
                clientcount = Client_getfds(&pollfds[nofServerSocks]);
@@ -275,13 +269,13 @@ void Server_run()
 {
        struct pollfd *pollfds;
 
-       /* max clients + listen sock + udp sock + client connecting that will be disconnected */
-       if ((pollfds = calloc((getIntConf(MAX_CLIENTS) + 5) , sizeof(struct pollfd))) == NULL)
-               Log_fatal("out of memory");
-
        /* Figure out bind address and port */
        struct sockaddr_storage** addresses = Server_setupAddressesAndPorts();
 
+       /* max clients + server sokets + client connecting that will be disconnected */
+       if ((pollfds = calloc((getIntConf(MAX_CLIENTS) + nofServerSocks + 1) , sizeof(struct pollfd))) == NULL)
+               Log_fatal("out of memory");
+
        /* Prepare TCP sockets */
        Server_setupTCPSockets(addresses, pollfds);