X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=src%2Fmessages.c;h=7b99ce0c9e477ccc57bb20f23efcff4ae38d6f35;hb=848c75d6739da336409a1192ee3db04bc8a47e39;hp=09ec927378c603f6ae3ca29a115afa985b186242;hpb=893f97a3eab1da17bfa9f00edb081e4fba32548b;p=umurmur.git diff --git a/src/messages.c b/src/messages.c index 09ec927..7b99ce0 100644 --- a/src/messages.c +++ b/src/messages.c @@ -41,10 +41,9 @@ #define PREAMBLE_SIZE 6 -void dumpmsg(uint8_t *data, int size); static message_t *Msg_create_nopayload(messageType_t messageType); -void Msg_addPreamble(uint8_t *buffer, uint16_t type, uint32_t len) +static void Msg_addPreamble(uint8_t *buffer, uint16_t type, uint32_t len) { type = htons(type); len = htonl(len); @@ -232,13 +231,13 @@ int Msg_messageToNetwork(message_t *msg, uint8_t *buffer) break; default: - Log_warn("Msg_networkToMessage: Unsupported message %d", msg->messageType); + Log_warn("Msg_MessageToNetwork: Unsupported message %d", msg->messageType); return 0; } return len + PREAMBLE_SIZE; } -message_t *Msg_create_nopayload(messageType_t messageType) +static message_t *Msg_create_nopayload(messageType_t messageType) { message_t *msg = malloc(sizeof(message_t)); @@ -436,8 +435,12 @@ void Msg_free(message_t *msg) if (msg->unpacked) mumble_proto__channel_state__free_unpacked(msg->payload.channelState, NULL); else { - free(msg->payload.channelState->name); - free(msg->payload.channelState->description); + if (msg->payload.channelState->name) + free(msg->payload.channelState->name); + if (msg->payload.channelState->description) + free(msg->payload.channelState->description); + if (msg->payload.channelState->links) + free(msg->payload.channelState->links); free(msg->payload.channelState); } break; @@ -484,21 +487,21 @@ void Msg_free(message_t *msg) free(msg); } -void dumpmsg(uint8_t *data, int size) +message_t *Msg_CreateVoiceMsg(uint8_t *data, int size) { - int i, r = 0, offset = 0; - char buf[512]; + message_t *msg = NULL; - while (r * 8 + i < size) { - for (i = 0; i < 8 && r * 8 + i < size; i++) { - offset += sprintf(buf + offset, "%x ", data[r * 8 + i]); - } - sprintf(buf + offset, "\n"); - printf(buf); - offset = 0; - r++; - i = 0; - } + msg = Msg_create_nopayload(UDPTunnel); + msg->unpacked = false; + msg->payload.UDPTunnel = malloc(sizeof(struct _MumbleProto__UDPTunnel)); + if (msg->payload.UDPTunnel == NULL) + Log_fatal("Out of memory"); + msg->payload.UDPTunnel->packet.data = malloc(size); + if (msg->payload.UDPTunnel->packet.data == NULL) + Log_fatal("Out of memory"); + memcpy(msg->payload.UDPTunnel->packet.data, data, size); + msg->payload.UDPTunnel->packet.len = size; + return msg; } message_t *Msg_networkToMessage(uint8_t *data, int size) @@ -524,16 +527,7 @@ message_t *Msg_networkToMessage(uint8_t *data, int size) } case UDPTunnel: /* Non-standard handling of tunneled voice data */ { - msg = Msg_create_nopayload(UDPTunnel); - msg->unpacked = false; - msg->payload.UDPTunnel = malloc(sizeof(struct _MumbleProto__UDPTunnel)); - if (msg->payload.UDPTunnel == NULL) - Log_fatal("Out of memory"); - msg->payload.UDPTunnel->packet.data = malloc(msgLen); - if (msg->payload.UDPTunnel->packet.data == NULL) - Log_fatal("Out of memory"); - memcpy(msg->payload.UDPTunnel->packet.data, msgData, msgLen); - msg->payload.UDPTunnel->packet.len = msgLen; + msg = Msg_CreateVoiceMsg(msgData, msgLen); break; } case Authenticate: