mirror of
https://github.com/irssi/irssi.git
synced 2025-02-02 15:08:01 -05:00
/RECONNECT <tag>|* [<quit message>] - if tag is a connected server tag that
server is reconnected with specified quit message. git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2952 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
parent
69cafa1018
commit
b0896601c5
@ -353,25 +353,39 @@ static void cmd_reconnect(const char *data, SERVER_REC *server)
|
|||||||
{
|
{
|
||||||
SERVER_CONNECT_REC *conn;
|
SERVER_CONNECT_REC *conn;
|
||||||
RECONNECT_REC *rec;
|
RECONNECT_REC *rec;
|
||||||
int tag;
|
char *tag, *msg;
|
||||||
|
void *free_arg;
|
||||||
|
int tagnum;
|
||||||
|
|
||||||
if (*data == '\0' && server != NULL) {
|
if (!cmd_get_params(data, &free_arg, 2 | PARAM_FLAG_GETREST, &tag, &msg))
|
||||||
/* reconnect back to same server */
|
return;
|
||||||
|
|
||||||
|
if (*tag != '\0' && strcmp(tag, "*") != 0)
|
||||||
|
server = server_find_tag(tag);
|
||||||
|
|
||||||
|
if (server != NULL) {
|
||||||
|
/* reconnect connected server */
|
||||||
conn = server_connect_copy_skeleton(server->connrec, TRUE);
|
conn = server_connect_copy_skeleton(server->connrec, TRUE);
|
||||||
|
|
||||||
if (server->connected)
|
if (server->connected)
|
||||||
reconnect_save_status(conn, server);
|
reconnect_save_status(conn, server);
|
||||||
signal_emit("command disconnect", 2, "* Reconnecting", server);
|
|
||||||
|
msg = g_strconcat("* ", *msg == '\0' ?
|
||||||
|
"Reconnecting" : msg, NULL);
|
||||||
|
signal_emit("command disconnect", 2, msg, server);
|
||||||
|
g_free(msg);
|
||||||
|
|
||||||
conn->reconnection = TRUE;
|
conn->reconnection = TRUE;
|
||||||
server_connect(conn);
|
server_connect(conn);
|
||||||
server_connect_unref(conn);
|
server_connect_unref(conn);
|
||||||
|
cmd_params_free(free_arg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g_strcasecmp(data, "all") == 0) {
|
if (g_strcasecmp(tag, "all") == 0) {
|
||||||
/* reconnect all servers in reconnect queue */
|
/* reconnect all servers in reconnect queue */
|
||||||
reconnect_all();
|
reconnect_all();
|
||||||
|
cmd_params_free(free_arg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -384,20 +398,21 @@ static void cmd_reconnect(const char *data, SERVER_REC *server)
|
|||||||
if (g_strncasecmp(data, "RECON-", 6) == 0)
|
if (g_strncasecmp(data, "RECON-", 6) == 0)
|
||||||
data += 6;
|
data += 6;
|
||||||
|
|
||||||
tag = atoi(data);
|
tagnum = atoi(tag);
|
||||||
rec = tag <= 0 ? NULL : reconnect_find_tag(tag);
|
rec = tagnum <= 0 ? NULL : reconnect_find_tag(tagnum);
|
||||||
|
|
||||||
if (rec == NULL) {
|
|
||||||
signal_emit("server reconnect not found", 1, data);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
conn = rec->conn;
|
if (rec == NULL) {
|
||||||
server_connect_ref(conn);
|
signal_emit("server reconnect not found", 1, data);
|
||||||
server_reconnect_destroy(rec);
|
} else {
|
||||||
server_connect(conn);
|
conn = rec->conn;
|
||||||
server_connect_unref(conn);
|
server_connect_ref(conn);
|
||||||
|
server_reconnect_destroy(rec);
|
||||||
|
server_connect(conn);
|
||||||
|
server_connect_unref(conn);
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd_params_free(free_arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void cmd_disconnect(const char *data, SERVER_REC *server)
|
static void cmd_disconnect(const char *data, SERVER_REC *server)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user