forked from PsychoticNinja/ailin-nemui-irssi
[wip]
This commit is contained in:
parent
882ff0d976
commit
5c63ce1a2e
@ -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),
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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",
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user