X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Firssi%2Fsrc%2Fsilc%2Fcore%2Fsilc-servers.c;h=e16fb02cdc056fef1116a982f49259c3bf0d7483;hb=52e57c880aba9c5e89f59d962eb9af75670b76e0;hp=ce5b6e02a66f84917885e4837e4fbd29f3e8441a;hpb=46544fe1da7325ffa60b9732867acb2c6de6e10c;p=silc.git diff --git a/apps/irssi/src/silc/core/silc-servers.c b/apps/irssi/src/silc/core/silc-servers.c index ce5b6e02..e16fb02c 100644 --- a/apps/irssi/src/silc/core/silc-servers.c +++ b/apps/irssi/src/silc/core/silc-servers.c @@ -102,9 +102,14 @@ static void silc_send_msg_clients(SilcClient client, clients = silc_client_get_clients_local(silc_client, server->conn, rec->nick, FALSE); if (!clients) { - printtext(NULL, NULL, MSGLEVEL_CLIENTERROR, - "%s: There is no such client (did you mean %s?)", rec->nick, - target->nickname); + if (strchr(rec->nick, '@') && target->server) + printtext(NULL, NULL, MSGLEVEL_CLIENTERROR, + "%s: There is no such client (did you mean %s@%s?)", rec->nick, + target->nickname, target->server); + else + printtext(NULL, NULL, MSGLEVEL_CLIENTERROR, + "%s: There is no such client (did you mean %s?)", rec->nick, + target->nickname); goto out; } @@ -275,6 +280,7 @@ static void silc_connect_cb(SilcClient client, void *context) { SILC_SERVER_REC *server = context; + FtpSession ftp; char *file; SILC_LOG_DEBUG(("Connection callback %p, status %d, error %d, message %s", @@ -293,10 +299,13 @@ static void silc_connect_cb(SilcClient client, /* Enable queueing until we have our requested nick */ if (((opt_nickname && - silc_utf8_strcasecmp(opt_nickname, conn->local_entry->nickname)) || + !silc_utf8_strcasecmp(opt_nickname, + conn->local_entry->nickname)) || (settings_get_str("nick") && - silc_utf8_strcasecmp(settings_get_str("nick"), conn->local_entry->nickname))) && - !silc_utf8_strcasecmp(conn->local_entry->nickname, conn->local_entry->username)) + !silc_utf8_strcasecmp(settings_get_str("nick"), + conn->local_entry->nickname))) && + silc_utf8_strcasecmp(conn->local_entry->nickname, + conn->local_entry->username)) silc_queue_enable(conn); /* Put default attributes */ @@ -345,6 +354,12 @@ static void silc_connect_cb(SilcClient client, silc_get_status_message(error), error, message ? message : ""); + /* Close FTP sessions */ + silc_dlist_start(server->ftp_sessions); + while ((ftp = silc_dlist_get(server->ftp_sessions))) + silc_client_file_close(client, conn, ftp->session_id); + silc_dlist_uninit(server->ftp_sessions); + if (server->conn) server->conn->context = NULL; server->conn = NULL; @@ -451,8 +466,6 @@ static void sig_disconnected(SILC_SERVER_REC *server) if (!IS_SILC_SERVER(server)) return; - silc_dlist_uninit(server->ftp_sessions); - if (server->conn) { /* Close connection */ silc_client_close_connection(silc_client, server->conn); @@ -467,9 +480,11 @@ static void sig_disconnected(SILC_SERVER_REC *server) } /* SILC closes the handle */ - g_io_channel_unref(net_sendbuffer_handle(server->handle)); - net_sendbuffer_destroy(server->handle, FALSE); - server->handle = NULL; + if (server->handle) { + g_io_channel_unref(net_sendbuffer_handle(server->handle)); + net_sendbuffer_destroy(server->handle, FALSE); + server->handle = NULL; + } } SERVER_REC *silc_server_init_connect(SERVER_CONNECT_REC *conn)