Add function for sending textmessages.
authorMartin Johansson <martin@fatbob.nu>
Mon, 3 Dec 2012 19:33:00 +0000 (20:33 +0100)
committerMartin Johansson <martin@fatbob.nu>
Tue, 5 Feb 2013 20:30:35 +0000 (21:30 +0100)
src/client.c
src/client.h
src/messagehandler.c

index 3444882a839e98996a3c1e19184fc38a70b0792a..abb9377ef1b0dbc5f52d6566022250f0a282da05 100644 (file)
@@ -273,24 +273,7 @@ void recheckCodecVersions(client_t *connectingClient)
                        iCodecBeta = version;
        } else if (bOpus == enableOpus) {
                if (connectingClient && !connectingClient->bOpus) {
-                       char *message;
-                       uint32_t *tree_id;
-                       message_t *sendmsg = NULL;
-
-                       message = malloc(strlen(OPUS_WARN) + 1);
-                       if (!message)
-                               Log_fatal("Out of memory");
-                       tree_id = malloc(sizeof(uint32_t));
-                       if (!tree_id)
-                               Log_fatal("Out of memory");
-                       *tree_id = 0;
-                       sendmsg = Msg_create(TextMessage);
-                       sendmsg->payload.textMessage->message = message;
-                       sendmsg->payload.textMessage->n_tree_id = 1;
-                       sendmsg->payload.textMessage->tree_id = tree_id;
-                       sprintf(message, OPUS_WARN);
-                       Client_send_message(connectingClient, sendmsg);
-                       sendmsg = NULL;
+                       Client_textmessage(client_itr, OPUS_WARN);
                }
                return;
        }
@@ -314,24 +297,7 @@ void recheckCodecVersions(client_t *connectingClient)
        while (Client_iterate(&client_itr) != NULL) {
                if ((client_itr->authenticated || client_itr == connectingClient) &&
                    !client_itr->bOpus) {
-                       char *message;
-                       uint32_t *tree_id;
-                       message_t *sendmsg = NULL;
-
-                       message = malloc(strlen(OPUS_WARN) + 1);
-                       if (!message)
-                               Log_fatal("Out of memory");
-                       tree_id = malloc(sizeof(uint32_t));
-                       if (!tree_id)
-                               Log_fatal("Out of memory");
-                       *tree_id = 0;
-                       sendmsg = Msg_create(TextMessage);
-                       sendmsg->payload.textMessage->message = message;
-                       sendmsg->payload.textMessage->n_tree_id = 1;
-                       sendmsg->payload.textMessage->tree_id = tree_id;
-                       sprintf(message, OPUS_WARN);
-                       Client_send_message(client_itr, sendmsg);
-                       sendmsg = NULL;
+                       Client_textmessage(client_itr, OPUS_WARN);
                }
        }
        
@@ -693,6 +659,27 @@ client_t *Client_iterate(client_t **client_itr)
        return c;
 }
 
+void Client_textmessage(client_t *client, char *text)
+{
+       char *message;
+       uint32_t *tree_id;
+       message_t *sendmsg = NULL;
+
+       message = malloc(strlen(text) + 1);
+       if (!message)
+               Log_fatal("Out of memory");
+       tree_id = malloc(sizeof(uint32_t));
+       if (!tree_id)
+               Log_fatal("Out of memory");
+       *tree_id = 0;
+       sendmsg = Msg_create(TextMessage);
+       sendmsg->payload.textMessage->message = message;
+       sendmsg->payload.textMessage->n_tree_id = 1;
+       sendmsg->payload.textMessage->tree_id = tree_id;
+       strcpy(message, text);
+       Client_send_message(client, sendmsg);
+}
+
 
 int Client_send_message_except(client_t *client, message_t *msg)
 {
index a0f42d56d4dafc33856ab7fffcd37772cfb41e77..7e762e17071f0080e006a9bf2fcd696225caf4cf 100644 (file)
@@ -125,5 +125,6 @@ void recheckCodecVersions(client_t *connectingClient);
 void Client_codec_add(client_t *client, int codec);
 void Client_codec_free(client_t *client);
 codec_t *Client_codec_iterate(client_t *client, codec_t **codec_itr);
+void Client_textmessage(client_t *client, char *text);
 
 #endif
index faffea26b4204a697a928747145496ed740af39a..cb7f48621dd791d0eeb93f9b523e219954bed8c2 100644 (file)
@@ -247,24 +247,7 @@ void Mh_handle_message(client_t *client, message_t *msg)
                Client_send_message(client, sendmsg);
 
                if (!bOpus && client->bOpus && fake_celt_support) {
-                       char *message;
-                       uint32_t *tree_id;
-                       message_t *sendmsg = NULL;
-
-                       message = malloc(strlen(NO_CELT_MESSAGE) + 1);
-                       if (!message)
-                               Log_fatal("Out of memory");
-                       tree_id = malloc(sizeof(uint32_t));
-                       if (!tree_id)
-                               Log_fatal("Out of memory");
-                       *tree_id = 0;
-                       sendmsg = Msg_create(TextMessage);
-                       sendmsg->payload.textMessage->message = message;
-                       sendmsg->payload.textMessage->n_tree_id = 1;
-                       sendmsg->payload.textMessage->tree_id = tree_id;
-                       sprintf(message, NO_CELT_MESSAGE);
-                       Client_send_message(client, sendmsg);
-                       sendmsg = NULL;
+                       Client_textmessage(client, NO_CELT_MESSAGE);
                }
 
                /* Iterate channels and send channel info */