X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=src%2Fclient.c;h=961bee8a86a579c1f82f4665da80e8384bd74e8a;hb=a0263cad8675800030a33dacf38d881fa647d0af;hp=1aea8e2fb5fadb32a66014f1182c761f2f84c875;hpb=0b2541420086a2e924ba5f192f36c137b958993c;p=umurmur.git diff --git a/src/client.c b/src/client.c index 1aea8e2..961bee8 100644 --- a/src/client.c +++ b/src/client.c @@ -679,22 +679,15 @@ void Client_textmessage(client_t *client, char *text) int Client_send_message_except(client_t *client, message_t *msg) { client_t *itr = NULL; - int count = 0; - Msg_inc_ref(msg); /* Make sure a reference is held during the whole iteration. */ while (Client_iterate(&itr) != NULL) { if (itr != client) { - if (count++ > 0) - Msg_inc_ref(msg); /* One extra reference for each new copy */ + Msg_inc_ref(msg); /* One extra reference for each new copy */ Log_debug("Msg %d to %s refcount %d", msg->messageType, itr->username, msg->refcount); Client_send_message(itr, msg); } } - Msg_free(msg); /* Free our reference to the message */ - - if (count == 0) - Msg_free(msg); /* If only 1 client is connected then no message is passed - * to Client_send_message(). Free it here. */ + Msg_free(msg); /* Consume caller's reference. */ return 0; } @@ -702,22 +695,15 @@ int Client_send_message_except(client_t *client, message_t *msg) int Client_send_message_except_ver(client_t *client, message_t *msg, uint32_t version) { client_t *itr = NULL; - int count = 0; - Msg_inc_ref(msg); /* Make sure a reference is held during the whole iteration. */ while (Client_iterate(&itr) != NULL) { if (itr != client) { - if (count++ > 0) - Msg_inc_ref(msg); /* One extra reference for each new copy */ + Msg_inc_ref(msg); /* One extra reference for each new copy */ Log_debug("Msg %d to %s refcount %d", msg->messageType, itr->username, msg->refcount); Client_send_message_ver(itr, msg, version); } } - Msg_free(msg); /* Free our reference to the message */ - - if (count == 0) - Msg_free(msg); /* If only 1 client is connected then no message is passed - * to Client_send_message(). Free it here. */ + Msg_free(msg); /* Consume caller's reference. */ return 0; } @@ -891,7 +877,7 @@ int Client_voiceMsg(client_t *client, uint8_t *data, int len) int offset, packetsize; voicetarget_t *vt; - channel_t *ch = (channel_t *)client->channel; + channel_t *ch = client->channel; struct dlist *itr; if (!client->authenticated || client->mute || client->self_mute || ch->silent)