summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorailin-nemui <ailin-nemui@users.noreply.github.com>2018-01-25 16:10:21 +0100
committerailin-nemui <ailin-nemui@users.noreply.github.com>2018-01-25 16:11:31 +0100
commit0909d47e5b5ab08cd07970a374e311f7f54be547 (patch)
tree994e6b053723ba7642f64b0ea1659385604d0ed0
parent243ae4be84d422322f20be1b715dc0b00ef9c32d (diff)
downloadirssi-0909d47e5b5ab08cd07970a374e311f7f54be547.zip
Check that server is still existent when using /oper
-rw-r--r--src/fe-common/irc/fe-irc-commands.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/fe-common/irc/fe-irc-commands.c b/src/fe-common/irc/fe-irc-commands.c
index 11a911d2..7a6b17a6 100644
--- a/src/fe-common/irc/fe-irc-commands.c
+++ b/src/fe-common/irc/fe-irc-commands.c
@@ -345,16 +345,18 @@ static void cmd_ts(const char *data)
}
typedef struct {
- IRC_SERVER_REC *server;
+ char *server_tag;
char *nick;
} OPER_PASS_REC;
static void cmd_oper_got_pass(const char *password, OPER_PASS_REC *rec)
{
- if (*password != '\0')
- irc_send_cmdv(rec->server, "OPER %s %s", rec->nick, password);
+ SERVER_REC *server_rec = server_find_tag(rec->server_tag);
+ if (*password != '\0' && IS_IRC_SERVER(server_rec))
+ irc_send_cmdv((IRC_SERVER_REC *) server_rec, "OPER %s %s", rec->nick, password);
g_free(rec->nick);
- g_free(rec);
+ g_free(rec->server_tag);
+ g_free(rec);
}
static void cmd_oper(const char *data, IRC_SERVER_REC *server)
@@ -374,7 +376,7 @@ static void cmd_oper(const char *data, IRC_SERVER_REC *server)
OPER_PASS_REC *rec;
rec = g_new(OPER_PASS_REC, 1);
- rec->server = server;
+ rec->server_tag = g_strdup(server->tag);
rec->nick = g_strdup(*nick != '\0' ? nick : server->nick);
format = format_get_text(MODULE_NAME, NULL, server, NULL,