X-Git-Url: http://git.code-monkey.de/?p=umurmur.git;a=blobdiff_plain;f=src%2Fclient.c;h=b69da172cc51324bf87701bbe698d035fa321b55;hp=d61de2b00a0297adda0f300a2ed750395998bac4;hb=aa21dde5fbd77ecefb946961ea2231d31d8f8e3b;hpb=0dd4061209039b7c96d05f87e6267ec5a6e71c77 diff --git a/src/client.c b/src/client.c index d61de2b..b69da17 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; @@ -664,20 +679,24 @@ client_t *Client_iterate(client_t **client_itr) return c; } -void Client_textmessage(client_t *client, char *text) +void Client_textmessage(client_t *client, const char *text) { char *message; uint32_t *tree_id; message_t *sendmsg = NULL; - message = Memory_safeMalloc(1, strlen(text) + 1); + message = strdup(text); + + if (message == NULL) + Log_fatal("Out of memory"); + tree_id = Memory_safeMalloc(1, sizeof(uint32_t)); *tree_id = 0; sendmsg = Msg_create(TextMessage); sendmsg->payload.textMessage->message = message; sendmsg->payload.textMessage->n_tree_id = 1; sendmsg->payload.textMessage->tree_id = tree_id; - strcpy(message, text); + Client_send_message(client, sendmsg); } @@ -979,7 +998,7 @@ int Client_voiceMsg(client_t *client, uint8_t *data, int len) } /* Sessions */ for (i = 0; i < TARGET_MAX_SESSIONS && vt->sessions[i] != -1; i++) { - client_t *c; + client_t *c = NULL; buffer[0] = (uint8_t) (type | 2); Log_debug("Whisper session %d", vt->sessions[i]); while (Client_iterate(&c) != NULL) {