X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=src%2Fclient.c;h=8f5fb7316b3e365a6afdf5ee51581eadab9ef025;hb=HEAD;hp=240700e1253f1c270a6239c050289714dcbc8f70;hpb=c4e1966b2719d116fa7f3ac1e31b5517c6568728;p=umurmur.git diff --git a/src/client.c b/src/client.c index 240700e..8f5fb73 100644 --- a/src/client.c +++ b/src/client.c @@ -427,6 +427,21 @@ void Client_disconnect_all() } } +client_t *Client_find_by_session(int session_id) +{ + struct dlist *itr; + + list_iterate(itr, &clients) { + client_t *client = list_get_entry(itr, client_t, node); + + if (client->sessionId == session_id) { + return client; + } + } + + return NULL; +} + client_t *Client_find_by_fd(int fd) { struct dlist *itr; @@ -986,11 +1001,11 @@ int Client_voiceMsg(client_t *client, uint8_t *data, int len) client_t *c = NULL; buffer[0] = (uint8_t) (type | 2); Log_debug("Whisper session %d", vt->sessions[i]); - while (Client_iterate(&c) != NULL) { - if (c->sessionId == vt->sessions[i]) { - Client_send_voice(client, c, buffer, pds->offset + 1, poslen); - break; - } + + c = Client_find_by_session(vt->sessions[i]); + + if (c != NULL) { + Client_send_voice(client, c, buffer, pds->offset + 1, poslen); } } }