More work toward 1.2.0:
[umurmur.git] / src / messages.c
index 9cd4dc775f191bb2fc54e8a39857f22d93953e6a..77a1a1d976a126254013e10a4a0759cb7efb22c0 100644 (file)
@@ -196,6 +196,15 @@ int Msg_messageToNetwork(message_t *msg, uint8_t *buffer)
                Msg_addPreamble(buffer, msg->messageType, len);
                mumble_proto__codec_version__pack(msg->payload.codecVersion, bufptr);
                break;
+       case PermissionQuery:
+               len = mumble_proto__permission_query__get_packed_size(msg->payload.permissionQuery);
+               if (len > MAX_MSGSIZE) {
+                       Log_warn("Too big tx message. Discarding");
+                       break;
+                       }
+               Msg_addPreamble(buffer, msg->messageType, len);
+               mumble_proto__permission_query__pack(msg->payload.permissionQuery, bufptr);
+               break;
 
        default:
                Log_warn("Unsupported message %d", msg->messageType);
@@ -276,6 +285,10 @@ message_t *Msg_create(messageType_t messageType)
                msg->payload.channelState = malloc(sizeof(MumbleProto__ChannelState));
                mumble_proto__channel_state__init(msg->payload.channelState);
                break;
+       case PermissionQuery:
+               msg->payload.permissionQuery = malloc(sizeof(MumbleProto__PermissionQuery));
+               mumble_proto__permission_query__init(msg->payload.permissionQuery);
+               break;
 
        default:
                Log_warn("Msg_create: Unsupported message %d", msg->messageType);
@@ -413,6 +426,13 @@ void Msg_free(message_t *msg)
                        free(msg->payload.channelState);
                }
                break;
+       case PermissionQuery:
+               if (msg->unpacked)
+                       mumble_proto__permission_query__free_unpacked(msg->payload.permissionQuery, NULL);
+               else {
+                       free(msg->payload.permissionQuery);
+               }
+               break;
 
        default:
                Log_warn("Msg_free: Unsupported message %d", msg->messageType);