X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=src%2Fclient.c;h=3d884629dc66235e3311a6462e2c60e1814af79c;hb=21ed5998124647e79de379c35b75acaf7323677a;hp=80cbe3d67802e850d68b7a9d2d570ac3976d8c8f;hpb=82bb2989ad3f139f7acb3bf91d471644cbb2a8d1;p=umurmur.git diff --git a/src/client.c b/src/client.c index 80cbe3d..3d88462 100644 --- a/src/client.c +++ b/src/client.c @@ -399,16 +399,12 @@ void Client_free(client_t *client) SSLi_free(client->ssl); close(client->tcpfd); clientcount--; - if (client->release) - free(client->release); - if (client->os) - free(client->os); - if (client->os_version) - free(client->os_version); - if (client->username) - free(client->username); - if (client->context) - free(client->context); + + free(client->release); + free(client->os); + free(client->os_version); + free(client->username); + free(client->context); free(client); if (authenticatedLeft) @@ -683,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; } @@ -706,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; }