closed some memory leaks
[umurmur.git] / src / client.c
index e0146f952ca46d44732a93ce93578bbe83264d81..b3b12b75030d3f76821bcaaeb2ef1995156d41e8 100644 (file)
@@ -64,7 +64,7 @@ int iCodecAlpha, iCodecBeta;
 bool_t bPreferAlpha;
 
 extern int* udpsocks;
-extern bool hasv4;
+extern bool_t hasv4;
 
 void Client_init()
 {
@@ -168,7 +168,7 @@ void Client_token_add(client_t *client, char *token_string)
        client->tokencount++;
 }
 
-bool_t Client_token_match(client_t *client, char *str)
+bool_t Client_token_match(client_t *client, char const *str)
 {
        token_t *token;
        struct dlist *itr;
@@ -834,7 +834,9 @@ int Client_read_udp(int udpsock)
                        if (memcmp(itraddress, fromaddress, addresslength) == 0) {
                                if (checkDecrypt(itr, encrypted, buffer, len)) {
                                        memcpy(itr->key, key, KEY_LENGTH);
-                                       Log_info_client(itr, "New UDP connection from %s on port %d", Util_clientAddressToString(itr), fromport);
+                                       char* clientAddressString = Util_clientAddressToString(itr);
+                                       Log_info_client(itr, "New UDP connection from %s on port %d", clientAddressString, fromport);
+                                       free(clientAddressString);
                                        memcpy(&itr->remote_udp, &from, sizeof(struct sockaddr_storage));
                                        break;
                                }
@@ -848,6 +850,9 @@ int Client_read_udp(int udpsock)
        itr->bUDP = true;
        len -= 4; /* Adjust for crypt header */
        msgType = (UDPMessageType_t)((buffer[0] >> 5) & 0x7);
+
+       char *clientAddressString = NULL;
+
        switch (msgType) {
                case UDPVoiceSpeex:
                case UDPVoiceCELTAlpha:
@@ -862,7 +867,9 @@ int Client_read_udp(int udpsock)
                        Client_send_udp(itr, buffer, len);
                        break;
                default:
-                       Log_debug("Unknown UDP message type from %s port %d", Util_clientAddressToString(itr), fromport);
+                       clientAddressString = Util_clientAddressToString(itr);
+                       Log_debug("Unknown UDP message type from %s port %d", clientAddressString, fromport);
+                       free(clientAddressString);
                        break;
        }
 
@@ -958,8 +965,10 @@ int Client_voiceMsg(client_t *client, uint8_t *data, int len)
                        if (vt->channels[i].linked && !list_empty(&ch->channel_links)) {
                                struct dlist *ch_itr;
                                list_iterate(ch_itr, &ch->channel_links) {
+                                       channellist_t *chl;
                                        channel_t *ch_link;
-                                       ch_link = list_get_entry(ch_itr, channel_t, link_node);
+                                       chl = list_get_entry(ch_itr, channellist_t, node);
+                                       ch_link = chl->chan;
                                        list_iterate(itr, &ch_link->clients) {
                                                client_t *c;
                                                c = list_get_entry(itr, client_t, chan_node);