From 5c63ce1a2eb8bf1d2310df6370325603419c3b9c Mon Sep 17 00:00:00 2001 From: ailin-nemui Date: Sun, 25 Nov 2018 13:11:57 +0100 Subject: [PATCH] [wip] --- src/core/signal-registry.def | 4 ++-- src/core/signal-registry.def.in | 2 +- src/irc/core/irc-cap.c | 16 ++++++++++---- src/irc/core/irc-servers-setup.c | 38 ++++++++++++++++++++------------ src/irc/core/irc-session.c | 21 +++++++++++------- src/irc/core/sasl.c | 21 +++++++++--------- 6 files changed, 63 insertions(+), 39 deletions(-) diff --git a/src/core/signal-registry.def b/src/core/signal-registry.def index 653573aa..14df5fbe 100644 --- a/src/core/signal-registry.def +++ b/src/core/signal-registry.def @@ -206,8 +206,8 @@ SIGNAL_REGISTER(session_save_channel, 3, (CHANNEL_REC *channel, CONFIG_REC *conf channel, config, node) SIGNAL_REGISTER(session_save_server, 3, (SERVER_REC *server, CONFIG_REC *config, CONFIG_NODE *node), server, config, node) -SIGNAL_REGISTER(session_restore_nick, 2, (CHANNEL_REC *channel, NICK_REC *nick), - channel, nick) +SIGNAL_REGISTER(session_restore_nick, 2, (CHANNEL_REC *channel, CONFIG_NODE *node), + channel, node) SIGNAL_REGISTER(session_restore_channel, 2, (CHANNEL_REC *channel, CONFIG_NODE *node), channel, node) SIGNAL_REGISTER(session_restore_server, 2, (SERVER_REC *server, CONFIG_NODE *node), diff --git a/src/core/signal-registry.def.in b/src/core/signal-registry.def.in index f746248b..4963306c 100644 --- a/src/core/signal-registry.def.in +++ b/src/core/signal-registry.def.in @@ -122,7 +122,7 @@ "session save nick", CHANNEL_REC, NICK_REC, CONFIG_REC, CONFIG_NODE "session save channel", CHANNEL_REC, CONFIG_REC, CONFIG_NODE "session save server", SERVER_REC, CONFIG_REC, CONFIG_NODE - "session restore nick", CHANNEL_REC, NICK_REC + "session restore nick", CHANNEL_REC, CONFIG_NODE "session restore channel", CHANNEL_REC, CONFIG_NODE "session restore server", SERVER_REC, CONFIG_NODE "session restore", CONFIG_REC diff --git a/src/irc/core/irc-cap.c b/src/irc/core/irc-cap.c index 072ee0ed..66dce80f 100644 --- a/src/irc/core/irc-cap.c +++ b/src/irc/core/irc-cap.c @@ -98,8 +98,9 @@ static gboolean parse_cap_name(char *name, char **key, char **val) return TRUE; } -static void event_cap (IRC_SERVER_REC *server, char *args, char *nick, char *address) +static void event_cap (SERVER_REC *gserver, const char *args, const char *nick, const char *address) { + IRC_SERVER_REC *server; GSList *tmp; GString *cmd; char *params, *evt, *list, *star, **caps; @@ -109,6 +110,9 @@ static void event_cap (IRC_SERVER_REC *server, char *args, char *nick, char *add if (params == NULL) return; + if ((server = IRC_SERVER(gserver)) == NULL) + return; + /* Multiline responses have an additional parameter and we have to do * this stupid dance to parse them */ if (!g_ascii_strcasecmp(evt, "LS") && !strcmp(star, "*")) { @@ -279,8 +283,12 @@ static void event_cap (IRC_SERVER_REC *server, char *args, char *nick, char *add g_free(params); } -static void event_invalid_cap (IRC_SERVER_REC *server, const char *data, const char *from) +static void event_invalid_cap (SERVER_REC *gserver, const char *data, const char *from, const char *u0) { + IRC_SERVER_REC *server; + if ((server = IRC_SERVER(gserver)) == NULL) + return; + /* The server didn't understand one (or more) requested caps, terminate the negotiation. * This could be handled in a graceful way but since it shouldn't really ever happen this seems a * good way to deal with 410 errors. */ @@ -290,8 +298,8 @@ static void event_invalid_cap (IRC_SERVER_REC *server, const char *data, const c void cap_init (void) { - signal_add_first__event_cap(event_cap); - signal_add_first__event_410(event_invalid_cap); + signal_add_first__event_("cap", event_cap); + signal_add_first__event_("410", event_invalid_cap); } void cap_deinit (void) diff --git a/src/irc/core/irc-servers-setup.c b/src/irc/core/irc-servers-setup.c index e87e77f6..658380d0 100644 --- a/src/irc/core/irc-servers-setup.c +++ b/src/irc/core/irc-servers-setup.c @@ -32,11 +32,14 @@ #include "sasl.h" /* Fill information to connection from server setup record */ -static void sig_server_setup_fill_reconn(IRC_SERVER_CONNECT_REC *conn, - IRC_SERVER_SETUP_REC *sserver) +static void sig_server_setup_fill_reconn(SERVER_CONNECT_REC *gconn, + SERVER_SETUP_REC *gsserver) { - if (!IS_IRC_SERVER_CONNECT(conn) || - !IS_IRC_SERVER_SETUP(sserver)) + IRC_SERVER_CONNECT_REC *conn; + IRC_SERVER_SETUP_REC *sserver; + + if ((conn = IRC_SERVER_CONNECT(gconn)) == NULL || + (sserver = IRC_SERVER_SETUP(gsserver)) == NULL) return; if (sserver->cmd_queue_speed > 0) @@ -47,11 +50,12 @@ static void sig_server_setup_fill_reconn(IRC_SERVER_CONNECT_REC *conn, conn->max_query_chans = sserver->max_query_chans; } -static void sig_server_setup_fill_connect(IRC_SERVER_CONNECT_REC *conn) +static void sig_server_setup_fill_connect(SERVER_CONNECT_REC *gconn) { + IRC_SERVER_CONNECT_REC *conn; const char *value; - if (!IS_IRC_SERVER_CONNECT(conn)) + if ((conn = IRC_SERVER_CONNECT(gconn)) == NULL) return; value = settings_get_str("alternate_nick"); @@ -63,12 +67,16 @@ static void sig_server_setup_fill_connect(IRC_SERVER_CONNECT_REC *conn) g_strdup(value) : NULL; } -static void sig_server_setup_fill_chatnet(IRC_SERVER_CONNECT_REC *conn, - IRC_CHATNET_REC *ircnet) +static void sig_server_setup_fill_chatnet(SERVER_CONNECT_REC *gconn, + CHATNET_REC *gircnet) { - if (!IS_IRC_SERVER_CONNECT(conn)) + IRC_SERVER_CONNECT_REC *conn; + IRC_CHATNET_REC *ircnet; + + if ((conn = IRC_SERVER_CONNECT(gconn)) == NULL) + return; + if ((ircnet = IRCNET(gircnet)) == NULL) return; - g_return_if_fail(IS_IRCNET(ircnet)); if (ircnet->alternate_nick != NULL) { g_free_and_null(conn->alternate_nick); @@ -164,12 +172,13 @@ static void init_userinfo(void) SIGNAL_EMIT(irssi_init_userinfo_changed, GUINT_TO_POINTER(changed)); } -static void sig_server_setup_read(IRC_SERVER_SETUP_REC *rec, CONFIG_NODE *node) +static void sig_server_setup_read(SERVER_SETUP_REC *grec, CONFIG_NODE *node) { + IRC_SERVER_SETUP_REC *rec; g_return_if_fail(rec != NULL); g_return_if_fail(node != NULL); - if (!IS_IRC_SERVER_SETUP(rec)) + if ((rec = IRC_SERVER_SETUP(grec)) == NULL) return; rec->max_cmds_at_once = config_node_get_int(node, "cmds_max_at_once", 0); @@ -177,10 +186,11 @@ static void sig_server_setup_read(IRC_SERVER_SETUP_REC *rec, CONFIG_NODE *node) rec->max_query_chans = config_node_get_int(node, "max_query_chans", 0); } -static void sig_server_setup_saved(IRC_SERVER_SETUP_REC *rec, +static void sig_server_setup_saved(SERVER_SETUP_REC *grec, CONFIG_NODE *node) { - if (!IS_IRC_SERVER_SETUP(rec)) + IRC_SERVER_SETUP_REC *rec; + if ((rec = IRC_SERVER_SETUP(grec)) == NULL) return; if (rec->max_cmds_at_once > 0) diff --git a/src/irc/core/irc-session.c b/src/irc/core/irc-session.c index 3b5c95be..8bbe199a 100644 --- a/src/irc/core/irc-session.c +++ b/src/irc/core/irc-session.c @@ -21,6 +21,7 @@ #include "module.h" #include "signals.h" #include "signal-registry.h" +#include "core/signal-registry.h" #include "net-sendbuffer.h" #include "lib-config/iconfig.h" #include "misc.h" @@ -38,14 +39,15 @@ static void session_isupport_foreach(char *key, char *value, struct _isupport_da config_node_set_str(data->config, data->node, key, value); } -static void sig_session_save_server(IRC_SERVER_REC *server, CONFIG_REC *config, +static void sig_session_save_server(SERVER_REC *gserver, CONFIG_REC *config, CONFIG_NODE *node) { + IRC_SERVER_REC *server; GSList *tmp; CONFIG_NODE *isupport; struct _isupport_data isupport_data; - if (!IS_IRC_SERVER(server)) + if ((server = IRC_SERVER(gserver)) == NULL) return; /* send all non-redirected commands to server immediately */ @@ -80,12 +82,13 @@ static void sig_session_save_server(IRC_SERVER_REC *server, CONFIG_REC *config, g_hash_table_foreach(server->isupport, (GHFunc) session_isupport_foreach, &isupport_data); } -static void sig_session_restore_server(IRC_SERVER_REC *server, +static void sig_session_restore_server(SERVER_REC *gserver, CONFIG_NODE *node) { + IRC_SERVER_REC *server; GSList *tmp; - if (!IS_IRC_SERVER(server)) + if ((server = IRC_SERVER(gserver)) == NULL) return; if (server->real_address == NULL) @@ -126,15 +129,16 @@ static void sig_session_restore_server(IRC_SERVER_REC *server, } -static void sig_session_restore_nick(IRC_CHANNEL_REC *channel, +static void sig_session_restore_nick(CHANNEL_REC *gchannel, CONFIG_NODE *node) { + IRC_CHANNEL_REC *channel; const char *nick, *prefixes; int op, halfop, voice; char newprefixes[MAX_USER_PREFIXES + 1]; int i; - if (!IS_IRC_CHANNEL(channel)) + if ((channel = IRC_CHANNEL(gchannel)) == NULL) return; nick = config_node_get_str(node, "nick", NULL); @@ -175,12 +179,13 @@ static void session_restore_channel(IRC_CHANNEL_REC *channel) g_free(data); } -static void sig_connected(IRC_SERVER_REC *server) +static void sig_connected(SERVER_REC *gserver) { + IRC_SERVER_REC *server; GSList *tmp; char *str, *addr; - if (!IS_IRC_SERVER(server) || !server->session_reconnect) + if ((server = IRC_SERVER(gserver)) == NULL || !server->session_reconnect) return; str = g_strdup_printf("%s :Restoring connection to %s", diff --git a/src/irc/core/sasl.c b/src/irc/core/sasl.c index 0bc9d826..b9da8498 100644 --- a/src/irc/core/sasl.c +++ b/src/irc/core/sasl.c @@ -302,9 +302,10 @@ static void sasl_disconnected(IRC_SERVER_REC *server) sasl_timeout_stop(server); } -static void sig_sasl_over(IRC_SERVER_REC *server) +static void sig_sasl_over(SERVER_REC *gserver, const char *u0, const char *u1, const char *u2) { - if (!IS_IRC_SERVER(server)) + IRC_SERVER_REC *server; + if ((server = IRC_SERVER(gserver)) == NULL) return; /* The negotiation has now been terminated, if we didn't manage to @@ -333,18 +334,18 @@ void sasl_init(void) { settings_add_bool("server", "sasl_disconnect_on_failure", TRUE); - signal_add_first__event_001(sig_sasl_over); + signal_add_first__event_("001", sig_sasl_over); /* this event can get us connected on broken ircds, see irc-servers.c */ - signal_add_first__event_375(sig_sasl_over); + signal_add_first__event_("375", sig_sasl_over); signal_add_first__server_cap_ack_sasl(sasl_start); signal_add_first__server_cap_end(sig_sasl_over); signal_add_first__event_authenticate(sasl_step); - signal_add_first__event_903(sasl_success); - signal_add_first__event_902(sasl_fail); - signal_add_first__event_904(sasl_fail); - signal_add_first__event_905(sasl_fail); - signal_add_first__event_906(sasl_fail); - signal_add_first__event_907(sasl_already); + signal_add_first__event_("903", sasl_success); + signal_add_first__event_("902", sasl_fail); + signal_add_first__event_("904", sasl_fail); + signal_add_first__event_("905", sasl_fail); + signal_add_first__event_("906", sasl_fail); + signal_add_first__event_("907", sasl_already); signal_add_first__server_disconnected(sasl_disconnected); }