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"
}
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;
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;
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;
/* 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 */