diff --git a/src/irc/core/server-reconnect.c b/src/irc/core/server-reconnect.c index 832d55cd..d736ef29 100644 --- a/src/irc/core/server-reconnect.c +++ b/src/irc/core/server-reconnect.c @@ -345,8 +345,15 @@ static int sig_set_user_mode(IRC_SERVER_REC *server) newmode = server->usermode == NULL ? NULL : modes_join(server->usermode, mode); - if (server->usermode != NULL && strcmp(newmode, server->usermode) != 0) - irc_send_cmdv(server, "MODE %s -%s+%s", server->nick, server->usermode, mode); + + if (server->usermode == NULL) { + /* server didn't set user mode, just set the new one */ + irc_send_cmdv(server, "MODE %s %s", server->nick, mode); + } else { + if (strcmp(newmode, server->usermode) != 0) + irc_send_cmdv(server, "MODE %s -%s+%s", server->nick, server->usermode, mode); + } + g_free_not_null(newmode); return 0; }