Fix local mute/unmute not showing up in other users UI. Fix false authenticated info...
[umurmur.git] / src / messagehandler.c
index b2f5670e90d6c0c1f08fdd67b531a465bde7fefb..d20ccba1504cb08f598ced4eadd4299767cf1904 100644 (file)
@@ -29,7 +29,7 @@
    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 #include <string.h>
-#include <openssl/aes.h>
+#include <stdlib.h>
 
 #include "log.h"
 #include "list.h"
@@ -79,9 +79,15 @@ void Mh_handle_message(client_t *client, message_t *msg)
        }       
        switch (msg->messageType) {
        case Authenticate:
-                               
                Log_debug("Authenticate message received");
-               Log_debug("Username: %s", msg->payload.authenticate->username);
+               
+               if (IS_AUTH(client) || !msg->payload.authenticate->username) {
+                       /* Authenticate message might be sent when a token is set by the user.*/
+                       if (msg->payload.authenticate->n_tokens > 0) {
+                               Log_debug("Tokens in auth message from %s", client->username);
+                       }
+                       break;
+               }
                
                client->authenticated = true;
                
@@ -215,8 +221,6 @@ void Mh_handle_message(client_t *client, message_t *msg)
                sendmsg = Msg_create(UserState);
                sendmsg->payload.userState->has_session = true;
                sendmsg->payload.userState->session = client->sessionId;
-               sendmsg->payload.userState->has_user_id = true;
-               sendmsg->payload.userState->user_id = client->sessionId;
                sendmsg->payload.userState->name = strdup(client->username);
                sendmsg->payload.userState->has_channel_id = true;
                sendmsg->payload.userState->channel_id = ((channel_t *)client->channel)->id;
@@ -323,11 +327,22 @@ void Mh_handle_message(client_t *client, message_t *msg)
                        sendPermissionDenied(client, "Not supported by uMurmur");
                        break;
                }
+               
+               msg->payload.userState->has_session = true;
+               msg->payload.userState->session = client->sessionId;
+               msg->payload.userState->has_actor = true;
+               msg->payload.userState->actor = client->sessionId;
+
                if (msg->payload.userState->has_self_deaf) {
                        client->deaf = msg->payload.userState->self_deaf;
                }
                if (msg->payload.userState->has_self_mute) {
-                       client->mute = msg->payload.userState->self_mute;                       
+                       client->mute = msg->payload.userState->self_mute;
+                       if (!client->mute) {
+                               msg->payload.userState->has_self_deaf = true;
+                               msg->payload.userState->self_deaf = false;
+                               client->deaf = false;
+                       }
                }
                if (msg->payload.userState->has_channel_id) {
                        int leave_id;
@@ -352,8 +367,7 @@ void Mh_handle_message(client_t *client, message_t *msg)
                
                /* Re-use message */
                Msg_inc_ref(msg);
-               msg->payload.userState->has_actor = true;
-               msg->payload.userState->actor = client->sessionId;
+                               
                Client_send_message_except(NULL, msg);
 
                /* Need to send remove channel message _after_ UserState message */