From: Pekka Riikonen Date: Wed, 12 Nov 2003 09:39:00 +0000 (+0000) Subject: Show the session ID in the file transmision list. Remove X-Git-Tag: silc.toolkit.0.9.11~2 X-Git-Url: http://git.silcnet.org/gitweb/?a=commitdiff_plain;h=057536801e89b0f0d01d976f662abadc553914b3;p=silc.git Show the session ID in the file transmision list. Remove session from list that failed to transfer. Switch the current session automatically after transmission, and in errors, to new session if other sessions exists in the transfer list --- diff --git a/apps/irssi/src/fe-common/silc/module-formats.c b/apps/irssi/src/fe-common/silc/module-formats.c index ff2675bd..ba8cdfcb 100644 --- a/apps/irssi/src/fe-common/silc/module-formats.c +++ b/apps/irssi/src/fe-common/silc/module-formats.c @@ -178,7 +178,7 @@ FORMAT_REC fecommon_silc_formats[] = { { "file_na", "No file transfers available", 0 }, { "file_client_na", "No file transfer offered by {nick $0}", 1, { 0 } }, { "file_show_header", "File transfers", 0 }, - { "file_show_line", " $0 $1: $2kB of $3kB ($4%%) - $5kB/s - $6", 7, { 0, 0, 1, 1, 1, 3, 0 } }, + { "file_show_line", " $0 [$1] $2: $3kB of $4kB ($5%%) - $6kB/s - $7", 7, { 0, 1, 0, 1, 1, 1, 3, 0 } }, { "file_already_started", "File transfer already started with {nick $0}", 1, { 0 } }, { "file_error", "Error during file transfer with {nick $0}", 1, { 0 } }, { "file_error_no_such_file", "Error during file transfer with {nick $0}: $1: No such file", 2, { 0, 0 } }, diff --git a/apps/irssi/src/silc/core/silc-servers.c b/apps/irssi/src/silc/core/silc-servers.c index d5885194..db57213d 100644 --- a/apps/irssi/src/silc/core/silc-servers.c +++ b/apps/irssi/src/silc/core/silc-servers.c @@ -207,7 +207,7 @@ void silc_send_mime(SILC_SERVER_REC *server, int channel, const char *to, unescaped_data, unescaped_data_len, TRUE); } else { silc_send_msg(server, (char *)to, unescaped_data, unescaped_data_len, - SILC_MESSAGE_FLAG_DATA | + SILC_MESSAGE_FLAG_DATA | (sign ? SILC_MESSAGE_FLAG_SIGNED : 0)); } @@ -628,9 +628,12 @@ static void silc_client_file_monitor(SilcClient client, silc_schedule_task_add(silc_client->schedule, 0, silc_client_file_close_later, ftp, 1, 0, SILC_TASK_TIMEOUT, SILC_TASK_PRI_NORMAL); - if (ftp == server->current_session) - server->current_session = NULL; silc_dlist_del(server->ftp_sessions, ftp); + if (ftp == server->current_session) { + server->current_session = NULL; + silc_dlist_start(server->ftp_sessions); + server->current_session = silc_dlist_get(server->ftp_sessions); + } } if (status == SILC_CLIENT_FILE_MONITOR_KEY_AGREEMENT) { @@ -665,9 +668,13 @@ static void silc_client_file_monitor(SilcClient client, silc_schedule_task_add(silc_client->schedule, 0, silc_client_file_close_later, ftp, 1, 0, SILC_TASK_TIMEOUT, SILC_TASK_PRI_NORMAL); - if (ftp == server->current_session) - server->current_session = NULL; silc_dlist_del(server->ftp_sessions, ftp); + if (ftp == server->current_session) { + server->current_session = NULL; + silc_dlist_start(server->ftp_sessions); + server->current_session = silc_dlist_get(server->ftp_sessions); + } + } } @@ -686,9 +693,13 @@ static void silc_client_file_monitor(SilcClient client, silc_schedule_task_add(silc_client->schedule, 0, silc_client_file_close_later, ftp, 1, 0, SILC_TASK_TIMEOUT, SILC_TASK_PRI_NORMAL); - if (ftp == server->current_session) - server->current_session = NULL; silc_dlist_del(server->ftp_sessions, ftp); + if (ftp == server->current_session) { + server->current_session = NULL; + silc_dlist_start(server->ftp_sessions); + server->current_session = silc_dlist_get(server->ftp_sessions); + } + } } } @@ -884,10 +895,21 @@ static void command_file(const char *data, SILC_SERVER_REC *server, printformat_module("fe-common/silc", server, NULL, MSGLEVEL_CRAP, SILCTXT_FILE_ALREADY_STARTED, server->current_session->client_entry->nickname); - else + else { printformat_module("fe-common/silc", server, NULL, MSGLEVEL_CRAP, SILCTXT_FILE_CLIENT_NA, server->current_session->client_entry->nickname); + + silc_client_file_close(silc_client, conn, + server->current_session->session_id); + silc_dlist_del(server->ftp_sessions, server->current_session); + silc_free(server->current_session->filepath); + silc_free(server->current_session); + server->current_session = NULL; + + silc_dlist_start(server->ftp_sessions); + server->current_session = silc_dlist_get(server->ftp_sessions); + } } goto out; @@ -904,10 +926,20 @@ static void command_file(const char *data, SILC_SERVER_REC *server, printformat_module("fe-common/silc", server, NULL, MSGLEVEL_CRAP, SILCTXT_FILE_ALREADY_STARTED, client_entry->nickname); - else + else { printformat_module("fe-common/silc", server, NULL, MSGLEVEL_CRAP, SILCTXT_FILE_CLIENT_NA, client_entry->nickname); + silc_client_file_close(silc_client, conn, ftp->session_id); + silc_dlist_del(server->ftp_sessions, ftp); + if (ftp == server->current_session) { + server->current_session = NULL; + silc_dlist_start(server->ftp_sessions); + server->current_session = silc_dlist_get(server->ftp_sessions); + } + silc_free(ftp->filepath); + silc_free(ftp); + } } break; } @@ -963,6 +995,9 @@ static void command_file(const char *data, SILC_SERVER_REC *server, silc_free(server->current_session->filepath); silc_free(server->current_session); server->current_session = NULL; + + silc_dlist_start(server->ftp_sessions); + server->current_session = silc_dlist_get(server->ftp_sessions); goto out; } @@ -974,9 +1009,12 @@ static void command_file(const char *data, SILC_SERVER_REC *server, MSGLEVEL_CRAP, SILCTXT_FILE_CLOSED, client_entry->nickname, ftp->filepath ? ftp->filepath : "[N/A]"); - if (ftp == server->current_session) - server->current_session = NULL; silc_dlist_del(server->ftp_sessions, ftp); + if (ftp == server->current_session) { + server->current_session = NULL; + silc_dlist_start(server->ftp_sessions); + server->current_session = silc_dlist_get(server->ftp_sessions); + } silc_free(ftp->filepath); silc_free(ftp); break; @@ -1007,6 +1045,7 @@ static void command_file(const char *data, SILC_SERVER_REC *server, printformat_module("fe-common/silc", server, NULL, MSGLEVEL_CRAP, SILCTXT_FILE_SHOW_LINE, ftp->client_entry->nickname, + ftp->session_id, ftp->send ? "send" : "receive", (SilcUInt32)(ftp->offset + 1023) / 1024, (SilcUInt32)(ftp->filesize + 1023) / 1024,