diff --git a/docs/help/in/connect.in b/docs/help/in/connect.in index b64da1c2..a00e383d 100644 --- a/docs/help/in/connect.in +++ b/docs/help/in/connect.in @@ -12,6 +12,7 @@ -ircnet: Same as -network. Deprecated. Do not use. -host: the host -!: don't autojoin channels + -noautosendcmd: don't execute autosendcmd -rawlog: immediately open rawlog after connected This command makes irssi to connect to specified server. diff --git a/docs/help/in/server.in b/docs/help/in/server.in index 174c7eb2..18d837bc 100644 --- a/docs/help/in/server.in +++ b/docs/help/in/server.in @@ -15,6 +15,7 @@ -ircnet: Same as -network. Deprecated. Do not use -host: Specify what host name to use, if you have multiple -!: don't autojoin channels + -noautosendcmd: don't execute autosendcmd -cmdspeed: Same as /SET cmd_queue_speed, see section 3.1 -cmdmax: Same as /SET cmds_max_at_once, see section 3.1 -port: Use this only to edit the port number of an existing server, diff --git a/src/core/chat-commands.c b/src/core/chat-commands.c index 0f796324..f5d0e9f8 100644 --- a/src/core/chat-commands.c +++ b/src/core/chat-commands.c @@ -113,6 +113,9 @@ static SERVER_CONNECT_REC *get_server_connect(const char *data, int *plus_addr, if (g_hash_table_lookup(optlist, "!") != NULL) conn->no_autojoin_channels = TRUE; + if (g_hash_table_lookup(optlist, "noautosendcmd") != NULL) + conn->no_autosendcmd = TRUE; + if (g_hash_table_lookup(optlist, "noproxy") != NULL) g_free_and_null(conn->proxy); @@ -133,6 +136,7 @@ static SERVER_CONNECT_REC *get_server_connect(const char *data, int *plus_addr, /* SYNTAX: CONNECT [-4 | -6] [-ssl] [-ssl_cert ] [-ssl_pkey ] [-ssl_verify] [-ssl_cafile ] [-ssl_capath ] + [-!] [-noautosendcmd] [-noproxy] [-network ] [-host ] [-rawlog ]
| [ [ []]] */ @@ -238,6 +242,7 @@ static void sig_default_command_server(const char *data, SERVER_REC *server, /* SYNTAX: SERVER [-4 | -6] [-ssl] [-ssl_cert ] [-ssl_pkey ] [-ssl_verify] [-ssl_cafile ] [-ssl_capath ] + [-!] [-noautosendcmd] [-noproxy] [-network ] [-host ] [-rawlog ] [+]
| [ [ []]] */ @@ -453,7 +458,7 @@ void chat_commands_init(void) signal_add("default command server", (SIGNAL_FUNC) sig_default_command_server); signal_add("server sendmsg", (SIGNAL_FUNC) sig_server_sendmsg); - command_set_options("connect", "4 6 !! -network ssl +ssl_cert +ssl_pkey ssl_verify +ssl_cafile +ssl_capath +host noproxy -rawlog"); + command_set_options("connect", "4 6 !! -network ssl +ssl_cert +ssl_pkey ssl_verify +ssl_cafile +ssl_capath +host noproxy -rawlog noautosendcmd"); command_set_options("msg", "channel nick"); } diff --git a/src/core/chatnets.c b/src/core/chatnets.c index c307afda..376fab58 100644 --- a/src/core/chatnets.c +++ b/src/core/chatnets.c @@ -118,12 +118,11 @@ static void sig_connected(SERVER_REC *server) g_return_if_fail(IS_SERVER(server)); - if (server->connrec->chatnet == NULL || server->session_reconnect || - server->connrec->no_autojoin_channels) + if (server->connrec->chatnet == NULL || server->session_reconnect) return; rec = chatnet_find(server->connrec->chatnet); - if (rec != NULL && rec->autosendcmd) + if (!server->connrec->no_autosendcmd && rec != NULL && rec->autosendcmd) eval_special_string(rec->autosendcmd, "", server, NULL); } diff --git a/src/core/server-connect-rec.h b/src/core/server-connect-rec.h index cfbe3eba..a9588f04 100644 --- a/src/core/server-connect-rec.h +++ b/src/core/server-connect-rec.h @@ -34,6 +34,7 @@ GIOChannel *connect_handle; /* connect using this handle */ unsigned int reconnection:1; /* we're trying to reconnect a connected server */ unsigned int reconnecting:1; /* we're trying to reconnect any connection */ unsigned int no_autojoin_channels:1; /* don't autojoin any channels */ +unsigned int no_autosendcmd:1; /* don't execute autosendcmd */ unsigned int unix_socket:1; /* Connect using named unix socket */ unsigned int use_ssl:1; /* this connection uses SSL */ unsigned int ssl_verify:1; diff --git a/src/core/servers-reconnect.c b/src/core/servers-reconnect.c index c8a72628..15f9f354 100644 --- a/src/core/servers-reconnect.c +++ b/src/core/servers-reconnect.c @@ -188,7 +188,8 @@ server_connect_copy_skeleton(SERVER_CONNECT_REC *src, int connect_info) dest->channels = g_strdup(src->channels); dest->away_reason = g_strdup(src->away_reason); - dest->no_autojoin_channels = src->no_autojoin_channels; + dest->no_autojoin_channels = src->no_autojoin_channels; + dest->no_autosendcmd = src->no_autosendcmd; dest->use_ssl = src->use_ssl; dest->ssl_cert = g_strdup(src->ssl_cert); diff --git a/src/perl/perl-common.c b/src/perl/perl-common.c index daaa87f6..198da57d 100644 --- a/src/perl/perl-common.c +++ b/src/perl/perl-common.c @@ -301,6 +301,7 @@ void perl_connect_fill_hash(HV *hv, SERVER_CONNECT_REC *conn) hv_store(hv, "reconnection", 12, newSViv(conn->reconnection), 0); hv_store(hv, "no_autojoin_channels", 20, newSViv(conn->no_autojoin_channels), 0); + hv_store(hv, "no_autosendcmd", 14, newSViv(conn->no_autosendcmd), 0); hv_store(hv, "unix_socket", 11, newSViv(conn->unix_socket), 0); hv_store(hv, "use_ssl", 7, newSViv(conn->use_ssl), 0); hv_store(hv, "no_connect", 10, newSViv(conn->no_connect), 0);