diff options
author | Alexander Færøy <ahf@irssi.org> | 2010-03-21 20:06:10 +0000 |
---|---|---|
committer | ahf <ahf@dbcabf3a-b0e7-0310-adc4-f8d773084564> | 2010-03-21 20:06:10 +0000 |
commit | e37be456cde14705ec67b8b6d44bd2293b203b0d (patch) | |
tree | 2a247820e03843b0fe51651f4bcf70bd526c2bb4 /src/fe-common/core | |
parent | 1a4c66568655de3a399d4b21d6a0e25acdcf2da8 (diff) | |
download | irssi-e37be456cde14705ec67b8b6d44bd2293b203b0d.zip |
Allow servers with the same server and port to be part of multiple networks. This should make life much easier for znc users. Thanks to Tykling, Bazerka and znx.
git-svn-id: file:///var/www/svn.irssi.org/SVN/irssi/trunk@5125 dbcabf3a-b0e7-0310-adc4-f8d773084564
Diffstat (limited to 'src/fe-common/core')
-rw-r--r-- | src/fe-common/core/fe-common-core.c | 7 | ||||
-rw-r--r-- | src/fe-common/core/fe-server.c | 28 |
2 files changed, 25 insertions, 10 deletions
diff --git a/src/fe-common/core/fe-common-core.c b/src/fe-common/core/fe-common-core.c index 2b88b946..dce6890e 100644 --- a/src/fe-common/core/fe-common-core.c +++ b/src/fe-common/core/fe-common-core.c @@ -346,10 +346,13 @@ static void autoconnect_servers(void) if (rec->autoconnect && (rec->chatnet == NULL || gslist_find_icase_string(chatnets, rec->chatnet) == NULL)) { - if (rec->chatnet != NULL) + if (rec->chatnet != NULL) { chatnets = g_slist_append(chatnets, rec->chatnet); + str = g_strdup_printf("-network %s %s %d", rec->chatnet, rec->address, rec->port); + } else { + str = g_strdup_printf("%s %d", rec->address, rec->port); + } - str = g_strdup_printf("%s %d", rec->address, rec->port); signal_emit("command connect", 1, str); g_free(str); } diff --git a/src/fe-common/core/fe-server.c b/src/fe-common/core/fe-server.c index e5cce827..e4b32bdb 100644 --- a/src/fe-common/core/fe-server.c +++ b/src/fe-common/core/fe-server.c @@ -108,7 +108,7 @@ static void cmd_server_add(const char *data) { GHashTable *optlist; SERVER_SETUP_REC *rec; - char *addr, *portstr, *password, *value; + char *addr, *portstr, *password, *value, *chatnet; void *free_arg; int port; @@ -119,7 +119,10 @@ static void cmd_server_add(const char *data) if (*addr == '\0') cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS); port = *portstr == '\0' ? DEFAULT_SERVER_ADD_PORT : atoi(portstr); - rec = server_setup_find_port(addr, port); + chatnet = g_hash_table_lookup(optlist, "network"); + + rec = server_setup_find(addr, port, chatnet); + if (rec == NULL) { rec = create_server_setup(optlist); if (rec == NULL) { @@ -194,21 +197,30 @@ static void cmd_server_add(const char *data) cmd_params_free(free_arg); } -/* SYNTAX: SERVER REMOVE <address> [<port>] */ +/* SYNTAX: SERVER REMOVE <address> [<port>] [<network>] */ static void cmd_server_remove(const char *data) { SERVER_SETUP_REC *rec; - char *addr, *port; + char *addr, *port, *chatnet; void *free_arg; - if (!cmd_get_params(data, &free_arg, 2, &addr, &port)) + if (!cmd_get_params(data, &free_arg, 3, &addr, &port, &chatnet)) return; if (*addr == '\0') cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS); - if (*port == '\0') - rec = server_setup_find(addr, -1, NULL); + if (*port == '\0') { + if (*chatnet == '\0') + rec = server_setup_find(addr, -1, NULL); + else + rec = server_setup_find(addr, -1, chatnet); + } else - rec = server_setup_find_port(addr, atoi(port)); + { + if (*chatnet == '\0') + rec = server_setup_find(addr, atoi(port), NULL); + else + rec = server_setup_find(addr, atoi(port), chatnet); + } if (rec == NULL) printformat(NULL, NULL, MSGLEVEL_CLIENTNOTICE, TXT_SETUPSERVER_NOT_FOUND, addr, port); |