Extract function Client_find_by_fd().
authorTilman Sauerbeck <tilman@code-monkey.de>
Thu, 28 Dec 2017 13:16:15 +0000 (14:16 +0100)
committerTilman Sauerbeck <tilman@code-monkey.de>
Thu, 28 Dec 2017 13:16:15 +0000 (14:16 +0100)
Use it to get rid of duplicated code in Client_read_fd() and
Client_write_fd().

src/client.c

index 961bee8a86a579c1f82f4665da80e8384bd74e8a..d61de2b00a0297adda0f300a2ed750395998bac4 100644 (file)
@@ -54,6 +54,7 @@ extern char system_string[], version_string[];
 static int Client_read(client_t *client);
 static int Client_write(client_t *client);
 static int Client_send_udp(client_t *client, uint8_t *data, int len);
+static client_t *Client_find_by_fd(int fd);
 void Client_free(client_t *client);
 
 declare_list(clients);
@@ -426,17 +427,27 @@ void Client_disconnect_all()
        }
 }
 
-int Client_read_fd(int fd)
+client_t *Client_find_by_fd(int fd)
 {
        struct dlist *itr;
-       client_t *client = NULL;
 
        list_iterate(itr, &clients) {
-               if (fd == list_get_entry(itr, client_t, node)->tcpfd) {
-                       client = list_get_entry(itr, client_t, node);
-                       break;
+               client_t *client = list_get_entry(itr, client_t, node);
+
+               if (client->tcpfd == fd) {
+                       return client;
                }
        }
+
+       return NULL;
+}
+
+int Client_read_fd(int fd)
+{
+       client_t *client;
+
+       client = Client_find_by_fd(fd);
+
        if (client != NULL)
                return Client_read(client);
        else
@@ -538,15 +549,10 @@ int Client_read(client_t *client)
 
 int Client_write_fd(int fd)
 {
-       struct dlist *itr;
-       client_t *client = NULL;
+       client_t *client;
+
+       client = Client_find_by_fd(fd);
 
-       list_iterate(itr, &clients) {
-               if(fd == list_get_entry(itr, client_t, node)->tcpfd) {
-                       client = list_get_entry(itr, client_t, node);
-                       break;
-               }
-       }
        if (client != NULL)
                return Client_write(client);
        else