Add channel position.
[umurmur.git] / src / messagehandler.c
index cb7f48621dd791d0eeb93f9b523e219954bed8c2..1e49241890d6252664522f06177a88a3d956e49a 100644 (file)
@@ -1,5 +1,5 @@
-/* Copyright (C) 2009-2012, Martin Johansson <martin@fatbob.nu>
-   Copyright (C) 2005-2012, Thorvald Natvig <thorvald@natvig.com>
+/* Copyright (C) 2009-2013, Martin Johansson <martin@fatbob.nu>
+   Copyright (C) 2005-2013, Thorvald Natvig <thorvald@natvig.com>
 
    All rights reserved.
 
@@ -263,6 +263,10 @@ void Mh_handle_message(client_t *client, message_t *msg)
                        sendmsg->payload.channelState->name = strdup(ch_itr->name);
                        if (ch_itr->desc)
                                sendmsg->payload.channelState->description = strdup(ch_itr->desc);
+                       if (ch_itr->position != 0) {
+                               sendmsg->payload.channelState->has_position = true;
+                               sendmsg->payload.channelState->position = ch_itr->position;
+                       }
                        Log_debug("Send channel info: %s", sendmsg->payload.channelState->name);
                        Client_send_message(client, sendmsg);                   
                }
@@ -728,6 +732,8 @@ void Mh_handle_message(client_t *client, message_t *msg)
                newchan = Chan_createChannel(msg->payload.channelState->name,
                                                                         msg->payload.channelState->description);
                newchan->temporary = true;
+               if (msg->payload.channelState->has_position)
+                       newchan->position = msg->payload.channelState->position;
                Chan_addChannel(parent, newchan);
                msg->payload.channelState->has_channel_id = true;
                msg->payload.channelState->channel_id = newchan->id;
@@ -817,9 +823,12 @@ void Mh_handle_message(client_t *client, message_t *msg)
 
                        sendmsg->payload.userStats->version->has_version = true;
                        sendmsg->payload.userStats->version->version = target->version;
-                       sendmsg->payload.userStats->version->release = strdup(target->release);
-                       sendmsg->payload.userStats->version->os = strdup(target->os);
-                       sendmsg->payload.userStats->version->os_version = strdup(target->os_version);
+                       if (target->release)
+                               sendmsg->payload.userStats->version->release = strdup(target->release);
+                       if (target->os)
+                               sendmsg->payload.userStats->version->os = strdup(target->os);
+                       if (target->os_version)
+                               sendmsg->payload.userStats->version->os_version = strdup(target->os_version);
                        
                        sendmsg->payload.userStats->n_celt_versions = target->codec_count;
                        sendmsg->payload.userStats->celt_versions = malloc(sizeof(int32_t) * target->codec_count);
@@ -829,6 +838,7 @@ void Mh_handle_message(client_t *client, message_t *msg)
                        while (Client_codec_iterate(target, &codec_itr) != NULL)
                                sendmsg->payload.userStats->celt_versions[i++] = codec_itr->codec;
 
+                       sendmsg->payload.userStats->has_opus = true;
                        sendmsg->payload.userStats->opus = target->bOpus;
 
                        /* Address */