X-Git-Url: http://git.code-monkey.de/?p=umurmur.git;a=blobdiff_plain;f=src%2Fclient.c;h=d61de2b00a0297adda0f300a2ed750395998bac4;hp=961bee8a86a579c1f82f4665da80e8384bd74e8a;hb=0dd4061209039b7c96d05f87e6267ec5a6e71c77;hpb=fcc2c96e9785d94ac924fa6b008549c1357f6151 diff --git a/src/client.c b/src/client.c index 961bee8..d61de2b 100644 --- a/src/client.c +++ b/src/client.c @@ -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