/*
silc-server.c : irssi
- Copyright (C) 2000 - 2007 Timo Sirainen
+ Copyright (C) 2000 - 2008 Timo Sirainen
Pekka Riikonen <priikone@silcnet.org>
This program is free software; you can redistribute it and/or modify
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;
}
void *context)
{
SILC_SERVER_REC *server = context;
+ FtpSession ftp;
char *file;
SILC_LOG_DEBUG(("Connection callback %p, status %d, error %d, message %s",
/* We have successfully connected to server */
/* Enable queueing until we have our requested nick */
- if (((opt_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))) &&
+ if (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_queue_enable(conn);
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;
/* Set connection parameters */
memset(¶ms, 0, sizeof(params));
- params.nickname = (opt_nickname ? (char *)opt_nickname :
- (char *)settings_get_str("nick"));
+ params.nickname = (char *)settings_get_str("nick");
params.timeout_secs = settings_get_int("key_exchange_timeout_secs");
params.rekey_secs = settings_get_int("key_exchange_rekey_secs");
params.pfs = settings_get_bool("key_exchange_rekey_pfs");
+ params.context = server;
/* Try to read detached session data and use it if found. */
file = silc_get_session_filename(server);
if (!IS_SILC_SERVER(server))
return;
- silc_dlist_uninit(server->ftp_sessions);
+ /* If we have a prompt in progress, then abort it. */
+ if (server->prompt_op) {
+ silc_async_abort(server->prompt_op, NULL, NULL);
+ server->prompt_op = NULL;
+ }
if (server->conn) {
/* Close connection */
{
GHashTable *optlist;
char *target, *origtarget, *msg;
- void *free_arg;
+ void *free_arg = NULL;
int free_ret, target_type;
g_return_if_fail(data != NULL);
"message signed_own_public" : "message signed_own_private", 4,
server, msg, target, origtarget);
out:
- if (free_ret && target != NULL) g_free(target);
- cmd_params_free(free_arg);
+ if (free_ret && target != NULL)
+ g_free(target);
+ if (free_arg)
+ cmd_params_free(free_arg);
}
/* FILE command */
if (status == SILC_CLIENT_FILE_MONITOR_CLOSED)
return;
- snprintf(fsize, sizeof(fsize) - 1, "%llu", ((filesize + 1023) / 1024));
+ snprintf(fsize, sizeof(fsize) - 1, "%llu",
+ (unsigned long long)((filesize + 1023) / 1024));
silc_dlist_start(server->ftp_sessions);
while ((ftp = silc_dlist_get(server->ftp_sessions)) != SILC_LIST_END) {