X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=src%2Fmessagehandler.c;h=98a9953b2996256e351a6619b534c38cff8b1d84;hb=c26a4b9cbad862bce96e3dadcfaa85f7e2223de3;hp=8d188652308c158f89862bf5ae53553c668f051d;hpb=a72efcd9b1c000c47bbe363f51c9123528e41d84;p=umurmur.git diff --git a/src/messagehandler.c b/src/messagehandler.c index 8d18865..98a9953 100644 --- a/src/messagehandler.c +++ b/src/messagehandler.c @@ -143,22 +143,22 @@ void Mh_handle_message(client_t *client, message_t *msg) /* Channel stuff */ Chan_userJoin(defaultChan, client); /* Join default channel */ - /* Codec version */ - if (msg->payload.authenticate->n_celt_versions > MAX_CODECS) - Log_warn("Client has more than %d CELT codecs. Ignoring %d codecs", - MAX_CODECS, msg->payload.authenticate->n_celt_versions - MAX_CODECS); - - Log_debug("Client %d has %d CELT codecs", client->sessionId, msg->payload.authenticate->n_celt_versions); + /* Codec version */ + Log_debug("Client %d has %d CELT codecs", client->sessionId, + msg->payload.authenticate->n_celt_versions); if (msg->payload.authenticate->n_celt_versions > 0) { int i; - client->codec_count = msg->payload.authenticate->n_celt_versions > MAX_CODECS ? - MAX_CODECS : msg->payload.authenticate->n_celt_versions; - for (i = 0; i < client->codec_count; i++) { - client->codecs[i] = msg->payload.authenticate->celt_versions[i]; - Log_debug("Client %d CELT codec ver 0x%x", client->sessionId, client->codecs[i]); - } + codec_t *codec_itr; + client->codec_count = msg->payload.authenticate->n_celt_versions; + + for (i = 0; i < client->codec_count; i++) + Client_codec_add(client, msg->payload.authenticate->celt_versions[i]); + codec_itr = NULL; + while (Client_codec_iterate(client, &codec_itr) != NULL) + Log_debug("Client %d CELT codec ver 0x%x", client->sessionId, codec_itr->codec); + } else { - client->codecs[0] = (int32_t)0x8000000a; + Client_codec_add(client, (int32_t)0x8000000a); client->codec_count = 1; } @@ -413,9 +413,12 @@ void Mh_handle_message(client_t *client, message_t *msg) for (j = 0; j < target->n_session; j++) Voicetarget_add_session(client, targetId, target->session[j]); if (target->has_channel_id) { - if (target->has_links || target->has_children) - Log_warn("Whisper to children or linked channels not implemented. Ignoring."); - Voicetarget_add_channel(client, targetId, target->channel_id); + bool_t linked = false, children = false; + if (target->has_links) + linked = target->links; + if (target->has_children) + children = target->children; + Voicetarget_add_channel(client, targetId, target->channel_id, linked, children); } } break; @@ -445,6 +448,7 @@ void Mh_handle_message(client_t *client, message_t *msg) Client_send_message(client, msg); break; case UDPTunnel: + client->bUDP = false; Client_voiceMsg(client, msg->payload.UDPTunnel->packet.data, msg->payload.UDPTunnel->packet.len); break; case ChannelState: