From 8f668bb18ca50c06b6d3012e6bf656524f149410 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Helleu?= Date: Tue, 6 Jan 2015 21:05:38 +0100 Subject: irc: defer the auto-connection to servers with a timer (closes #279, task #13038) --- src/plugins/irc/irc-server.c | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) (limited to 'src/plugins/irc') diff --git a/src/plugins/irc/irc-server.c b/src/plugins/irc/irc-server.c index 2213cca43..2f6d8329f 100644 --- a/src/plugins/irc/irc-server.c +++ b/src/plugins/irc/irc-server.c @@ -4415,16 +4415,19 @@ irc_server_reconnect (struct t_irc_server *server) } /* - * Auto-connects to servers (called at startup). - * - * If auto_connect == 1, auto-connects to all servers with flag "autoconnect". - * If auto_connect == 0, auto-connect to temporary servers only. + * Callback for auto-connect to servers (called at startup). */ -void -irc_server_auto_connect (int auto_connect) +int +irc_server_auto_connect_timer_cb (void *data, int remaining_calls) { struct t_irc_server *ptr_server; + int auto_connect; + + /* make C compiler happy */ + (void) remaining_calls; + + auto_connect = (int)data; for (ptr_server = irc_servers; ptr_server; ptr_server = ptr_server->next_server) @@ -4436,6 +4439,22 @@ irc_server_auto_connect (int auto_connect) irc_server_reconnect_schedule (ptr_server); } } + + return WEECHAT_RC_OK; +} + +/* + * Auto-connects to servers (called at startup). + * + * If auto_connect == 1, auto-connects to all servers with flag "autoconnect". + * If auto_connect == 0, auto-connect to temporary servers only. + */ + +void +irc_server_auto_connect (int auto_connect) +{ + weechat_hook_timer (1, 0, 1, &irc_server_auto_connect_timer_cb, + (auto_connect) ? (void *)1 : (void *)0); } /* -- cgit v1.2.3