summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/channels.c3
-rw-r--r--src/core/chat-commands.c5
-rw-r--r--src/core/server-connect-rec.h1
3 files changed, 7 insertions, 2 deletions
diff --git a/src/core/channels.c b/src/core/channels.c
index 6add0b82..f0790c71 100644
--- a/src/core/channels.c
+++ b/src/core/channels.c
@@ -148,7 +148,8 @@ static void event_connected(SERVER_REC *server)
g_return_if_fail(SERVER(server));
- if (server->connrec->reconnection)
+ if (server->connrec->reconnection ||
+ server->connrec->no_autojoin_channels)
return;
/* get list of servers in same chat network */
diff --git a/src/core/chat-commands.c b/src/core/chat-commands.c
index 72ac41e4..285f2847 100644
--- a/src/core/chat-commands.c
+++ b/src/core/chat-commands.c
@@ -83,6 +83,9 @@ static SERVER_CONNECT_REC *get_server_connect(const char *data, int *plus_addr)
else if (g_hash_table_lookup(optlist, "4") != NULL)
conn->family = AF_INET;
+ if (g_hash_table_lookup(optlist, "!") != NULL)
+ conn->no_autojoin_channels = TRUE;
+
host = g_hash_table_lookup(optlist, "host");
if (host != NULL && *host != '\0') {
IPADDR ip4, ip6;
@@ -394,7 +397,7 @@ void chat_commands_init(void)
signal_add("default command server", (SIGNAL_FUNC) sig_default_command_server);
- command_set_options("connect", "4 6 +host");
+ command_set_options("connect", "4 6 !! +host");
command_set_options("join", "invite");
}
diff --git a/src/core/server-connect-rec.h b/src/core/server-connect-rec.h
index 4dcc5142..4aeba819 100644
--- a/src/core/server-connect-rec.h
+++ b/src/core/server-connect-rec.h
@@ -25,5 +25,6 @@ char *realname;
/* when reconnecting, the old server status */
unsigned int reconnection:1; /* we're trying to reconnect */
+unsigned int no_autojoin_channels:1; /* don't autojoin any channels */
char *channels;
char *away_reason;