From eccdff95fcc583ac52c47a720ae62dc97f22b7c1 Mon Sep 17 00:00:00 2001 From: Pekka Riikonen Date: Tue, 30 Oct 2001 18:31:26 +0000 Subject: [PATCH] updates. --- CHANGES | 21 ++++ .../irssi/src/fe-common/silc/module-formats.c | 6 +- .../irssi/src/fe-common/silc/module-formats.h | 2 + apps/irssi/src/silc/core/silc-servers.c | 106 +++++++++--------- includes/silcincludes.h | 6 +- lib/silcclient/client_ftp.c | 76 +++++++++---- lib/silcclient/silcapi.h | 8 +- lib/silcutil/silcnet.h | 3 +- lib/silcutil/unix/silcunixnet.c | 9 +- lib/silcutil/win32/silcwin32net.c | 6 +- 10 files changed, 150 insertions(+), 93 deletions(-) diff --git a/CHANGES b/CHANGES index 590f020c..c09573b6 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,24 @@ +Tue Oct 30 16:58:14 EST 2001 Pekka Riikonen + + * Send error message to application if opening file for + writing during file transfer fails. Affected file is + lib/silcclient/client_ftp.c. + + Remove all file transfer sessions for a client that we're + removing from ID cache. + + Affected file is lib/silcclient/client_ftp.c. + + * Fixed silc_net_addr2bin to return correct address. Affected + file lib/silcutil/[unix/win32]/silc[unix/win32]net.c. + + * Fixed file transfer session removing on signoff notify. + Affected file irssi/src/silc/core/silc-servers.c. + + * Added the SilcClientFileError to be returned in the monitor + callback. Added NO_SUCH_FILE and PERMISSION_DENIED errors. + Affected file lib/silcclient/silcapi.h. + Mon Oct 29 17:43:04 EST 2001 Pekka Riikonen * Fixed a crash in silc_client_ftp_free_sessions and diff --git a/apps/irssi/src/fe-common/silc/module-formats.c b/apps/irssi/src/fe-common/silc/module-formats.c index 6ccbbe88..36d8c356 100644 --- a/apps/irssi/src/fe-common/silc/module-formats.c +++ b/apps/irssi/src/fe-common/silc/module-formats.c @@ -132,8 +132,10 @@ FORMAT_REC fecommon_silc_formats[] = { { "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_already_started", "File transfer already started with {nick $0}", 1, { 0 } }, - { "file_error", "Error during file transfer with {nick $0}", 1, { 0 } }, - { "file_close", "File transfer closed 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 } }, + { "file_error_permission_denied", "Error during file transfer with {nick $0}: Permission denied", 1, { 0 } }, + { "file_close", "File transfer closed with {nick $0} - $1", 2, { 0, 0 } }, { NULL, NULL, 0 } }; diff --git a/apps/irssi/src/fe-common/silc/module-formats.h b/apps/irssi/src/fe-common/silc/module-formats.h index a7bb8ad8..361e1b71 100644 --- a/apps/irssi/src/fe-common/silc/module-formats.h +++ b/apps/irssi/src/fe-common/silc/module-formats.h @@ -126,6 +126,8 @@ enum { SILCTXT_FILE_SHOW_LINE, SILCTXT_FILE_ALREADY_STARTED, SILCTXT_FILE_ERROR, + SILCTXT_FILE_ERROR_NO_SUCH_FILE, + SILCTXT_FILE_ERROR_PERMISSION_DENIED, SILCTXT_FILE_CLOSED, }; diff --git a/apps/irssi/src/silc/core/silc-servers.c b/apps/irssi/src/silc/core/silc-servers.c index e63578f0..8da65701 100644 --- a/apps/irssi/src/silc/core/silc-servers.c +++ b/apps/irssi/src/silc/core/silc-servers.c @@ -421,6 +421,7 @@ SILC_TASK_CALLBACK(silc_client_file_close_later) static void silc_client_file_monitor(SilcClient client, SilcClientConnection conn, SilcClientMonitorStatus status, + SilcClientFileError error, uint64 offset, uint64 filesize, SilcClientEntry client_entry, @@ -432,13 +433,11 @@ static void silc_client_file_monitor(SilcClient client, FtpSession ftp; char fsize[32]; - snprintf(fsize, sizeof(fsize) - 1, "%llu", (filesize / 1024)); + snprintf(fsize, sizeof(fsize) - 1, "%llu", ((filesize + 1023) / 1024)); silc_dlist_start(server->ftp_sessions); while ((ftp = silc_dlist_get(server->ftp_sessions)) != SILC_LIST_END) { - if (ftp->client_entry == client_entry) { - ftp->session_id = session_id; - + if (ftp->session_id == session_id) { if (!ftp->filepath && filepath) ftp->filepath = strdup(filepath); break; @@ -449,8 +448,18 @@ static void silc_client_file_monitor(SilcClient client, return; if (status == SILC_CLIENT_FILE_MONITOR_ERROR) { - printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP, - SILCTXT_FILE_ERROR, client_entry->nickname); + if (error == SILC_CLIENT_FILE_NO_SUCH_FILE) + printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP, + SILCTXT_FILE_ERROR_NO_SUCH_FILE, + client_entry->nickname, + filepath ? filepath : "[N/A]"); + else if (error == SILC_CLIENT_FILE_PERMISSION_DENIED) + printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP, + SILCTXT_FILE_ERROR_PERMISSION_DENIED, + client_entry->nickname); + else + printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP, + SILCTXT_FILE_ERROR, client_entry->nickname); silc_schedule_task_add(silc_client->schedule, 0, silc_client_file_close_later, ftp, 1, 0, SILC_TASK_TIMEOUT, SILC_TASK_PRI_NORMAL); @@ -464,6 +473,19 @@ static void silc_client_file_monitor(SilcClient client, SILCTXT_FILE_KEY_EXCHANGE, client_entry->nickname); } + /* Save some transmission data */ + if (offset && filesize) { + unsigned long delta = time(NULL) - ftp->starttime; + + ftp->percent = ((double)offset / (double)filesize) * (double)100.0; + if (delta) + ftp->kps = (double)((offset / (double)delta) + 1023) / (double)1024; + else + ftp->kps = (double)(offset + 1023) / (double)1024; + ftp->offset = offset; + ftp->filesize = filesize; + } + if (status == SILC_CLIENT_FILE_MONITOR_SEND) { if (offset == 0) { printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP, @@ -504,15 +526,6 @@ static void silc_client_file_monitor(SilcClient client, silc_dlist_del(server->ftp_sessions, ftp); } } - - /* Save some transmission data */ - if (offset && filesize) { - ftp->percent = ((double)offset / (double)filesize) * (double)100.0; - ftp->kps = (double)((offset / (double)(time(NULL) - ftp->starttime)) + - 1023) / (double)1024; - ftp->offset = offset; - ftp->filesize = filesize; - } } typedef struct { @@ -614,13 +627,15 @@ static void command_file(const char *data, SILC_SERVER_REC *server, client_entry = entrys[0]; silc_free(entrys); - silc_client_file_send(silc_client, conn, silc_client_file_monitor, - server, client_entry, argv[2]); + ftp = silc_calloc(1, sizeof(*ftp)); + ftp->session_id = + silc_client_file_send(silc_client, conn, silc_client_file_monitor, + server, client_entry, argv[2]); + printformat_module("fe-common/silc", NULL, NULL, MSGLEVEL_CRAP, SILCTXT_FILE_SEND, client_entry->nickname, argv[2]); - ftp = silc_calloc(1, sizeof(*ftp)); ftp->client_entry = client_entry; ftp->filepath = strdup(argv[2]); ftp->conn = conn; @@ -663,7 +678,6 @@ static void command_file(const char *data, SILC_SERVER_REC *server, ret = silc_client_file_receive(silc_client, conn, silc_client_file_monitor, server, - server->current_session->client_entry, server->current_session->session_id); if (ret != SILC_CLIENT_FILE_OK) { if (ret == SILC_CLIENT_FILE_ALREADY_STARTED) @@ -681,10 +695,9 @@ static void command_file(const char *data, SILC_SERVER_REC *server, silc_dlist_start(server->ftp_sessions); while ((ftp = silc_dlist_get(server->ftp_sessions)) != SILC_LIST_END) { - if (ftp->client_entry == client_entry) { + if (ftp->client_entry == client_entry && !ftp->filepath) { ret = silc_client_file_receive(silc_client, conn, silc_client_file_monitor, server, - ftp->client_entry, ftp->session_id); if (ret != SILC_CLIENT_FILE_OK) { if (ret == SILC_CLIENT_FILE_ALREADY_STARTED) @@ -739,44 +752,30 @@ static void command_file(const char *data, SILC_SERVER_REC *server, goto out; } - ret = silc_client_file_close(silc_client, conn, - server->current_session->session_id); - if (ret != SILC_CLIENT_FILE_OK) { - if (ret == SILC_CLIENT_FILE_ALREADY_STARTED) - printformat_module("fe-common/silc", server, NULL, - MSGLEVEL_CRAP, SILCTXT_FILE_ALREADY_STARTED, - server->current_session->client_entry->nickname); - else - printformat_module("fe-common/silc", server, NULL, - MSGLEVEL_CRAP, SILCTXT_FILE_CLIENT_NA, - server->current_session->client_entry->nickname); - } else { - printformat_module("fe-common/silc", server, NULL, - MSGLEVEL_CRAP, SILCTXT_FILE_CLOSED, - server->current_session->client_entry->nickname); - } + silc_client_file_close(silc_client, conn, + server->current_session->session_id); + printformat_module("fe-common/silc", server, NULL, + MSGLEVEL_CRAP, SILCTXT_FILE_CLOSED, + server->current_session->client_entry->nickname, + server->current_session->filepath ? + server->current_session->filepath : "[N/A]"); + silc_dlist_del(server->ftp_sessions, server->current_session); + silc_free(server->current_session->filepath); + silc_free(server->current_session); + server->current_session = NULL; goto out; } silc_dlist_start(server->ftp_sessions); while ((ftp = silc_dlist_get(server->ftp_sessions)) != SILC_LIST_END) { if (ftp->client_entry == client_entry) { - ret = silc_client_file_close(silc_client, conn, ftp->session_id); - if (ret != SILC_CLIENT_FILE_OK) { - if (ret == SILC_CLIENT_FILE_ALREADY_STARTED) - printformat_module("fe-common/silc", server, NULL, - MSGLEVEL_CRAP, SILCTXT_FILE_ALREADY_STARTED, - client_entry->nickname); - else - printformat_module("fe-common/silc", server, NULL, - MSGLEVEL_CRAP, SILCTXT_FILE_CLIENT_NA, - client_entry->nickname); - } else { - printformat_module("fe-common/silc", server, NULL, - MSGLEVEL_CRAP, SILCTXT_FILE_CLOSED, - client_entry->nickname); - } - + silc_client_file_close(silc_client, conn, ftp->session_id); + printformat_module("fe-common/silc", server, NULL, + 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); silc_free(ftp->filepath); silc_free(ftp); @@ -902,7 +901,6 @@ void silc_server_free_ftp(SILC_SERVER_REC *server, silc_dlist_del(server->ftp_sessions, ftp); silc_free(ftp->filepath); silc_free(ftp); - break; } } } diff --git a/includes/silcincludes.h b/includes/silcincludes.h index 755b2686..4484d576 100644 --- a/includes/silcincludes.h +++ b/includes/silcincludes.h @@ -197,9 +197,9 @@ typedef signed long int64; typedef unsigned long long uint64; typedef signed long long int64; #else -typedef uint32 uint64; /* XXX Use Windows's own 64 bit types */ -typedef int32 int64; -#endif +typedef uint32 uint64; /* XXX Use Windows's own 64 bit types */ +typedef int32 int64; +#endif #else typedef uint32 uint64; typedef int32 int64; diff --git a/lib/silcclient/client_ftp.c b/lib/silcclient/client_ftp.c index fca04ad4..1ea2dc90 100644 --- a/lib/silcclient/client_ftp.c +++ b/lib/silcclient/client_ftp.c @@ -206,6 +206,7 @@ static void silc_client_ftp_monitor(SilcSFTP sftp, if (session->monitor) (*session->monitor)(session->client, session->conn, SILC_CLIENT_FILE_MONITOR_SEND, + SILC_CLIENT_FILE_OK, data->offset, session->filesize, session->client_entry, session->session_id, session->filepath, session->monitor_context); @@ -243,7 +244,12 @@ static void silc_client_ftp_data(SilcSFTP sftp, /* Call monitor callback */ if (session->monitor) (*session->monitor)(session->client, session->conn, - SILC_CLIENT_FILE_MONITOR_ERROR, 0, 0, + SILC_CLIENT_FILE_MONITOR_ERROR, + (status == SILC_SFTP_STATUS_NO_SUCH_FILE ? + SILC_CLIENT_FILE_NO_SUCH_FILE : + status == SILC_SFTP_STATUS_PERMISSION_DENIED ? + SILC_CLIENT_FILE_PERMISSION_DENIED : + SILC_CLIENT_FILE_ERROR), 0, 0, session->client_entry, session->session_id, session->filepath, session->monitor_context); @@ -265,6 +271,7 @@ static void silc_client_ftp_data(SilcSFTP sftp, if (session->monitor) (*session->monitor)(session->client, session->conn, SILC_CLIENT_FILE_MONITOR_RECEIVE, + SILC_CLIENT_FILE_OK, session->read_offset, session->filesize, session->client_entry, session->session_id, session->filepath, session->monitor_context); @@ -289,19 +296,31 @@ static void silc_client_ftp_open_handle(SilcSFTP sftp, /* Call monitor callback */ if (session->monitor) (*session->monitor)(session->client, session->conn, - SILC_CLIENT_FILE_MONITOR_ERROR, 0, 0, + SILC_CLIENT_FILE_MONITOR_ERROR, + (status == SILC_SFTP_STATUS_NO_SUCH_FILE ? + SILC_CLIENT_FILE_NO_SUCH_FILE : + status == SILC_SFTP_STATUS_PERMISSION_DENIED ? + SILC_CLIENT_FILE_PERMISSION_DENIED : + SILC_CLIENT_FILE_ERROR), 0, 0, session->client_entry, session->session_id, session->filepath, session->monitor_context); return; } /* Open the actual local file */ - session->fd = silc_file_open(session->filepath, O_RDWR | O_CREAT); + session->fd = silc_file_open(session->filepath, + O_RDWR | O_CREAT | O_EXCL); if (session->fd < 0) { /* Call monitor callback */ + session->client->ops->say(session->client, session->conn, + SILC_CLIENT_MESSAGE_ERROR, + "File `%s' open failed: %s", session->filepath, + strerror(errno)); + if (session->monitor) (*session->monitor)(session->client, session->conn, - SILC_CLIENT_FILE_MONITOR_ERROR, 0, 0, + SILC_CLIENT_FILE_MONITOR_ERROR, + SILC_CLIENT_FILE_ERROR, 0, 0, session->client_entry, session->session_id, session->filepath, session->monitor_context); return; @@ -317,6 +336,7 @@ static void silc_client_ftp_open_handle(SilcSFTP sftp, if (session->monitor) (*session->monitor)(session->client, session->conn, SILC_CLIENT_FILE_MONITOR_RECEIVE, + SILC_CLIENT_FILE_OK, session->read_offset, session->filesize, session->client_entry, session->session_id, session->filepath, session->monitor_context); @@ -339,7 +359,12 @@ static void silc_client_ftp_readdir_name(SilcSFTP sftp, /* Call monitor callback */ if (session->monitor) (*session->monitor)(session->client, session->conn, - SILC_CLIENT_FILE_MONITOR_ERROR, 0, 0, + SILC_CLIENT_FILE_MONITOR_ERROR, + (status == SILC_SFTP_STATUS_NO_SUCH_FILE ? + SILC_CLIENT_FILE_NO_SUCH_FILE : + status == SILC_SFTP_STATUS_PERMISSION_DENIED ? + SILC_CLIENT_FILE_PERMISSION_DENIED : + SILC_CLIENT_FILE_ERROR), 0, 0, session->client_entry, session->session_id, session->filepath, session->monitor_context); return; @@ -375,7 +400,12 @@ static void silc_client_ftp_opendir_handle(SilcSFTP sftp, /* Call monitor callback */ if (session->monitor) (*session->monitor)(session->client, session->conn, - SILC_CLIENT_FILE_MONITOR_ERROR, 0, 0, + SILC_CLIENT_FILE_MONITOR_ERROR, + (status == SILC_SFTP_STATUS_NO_SUCH_FILE ? + SILC_CLIENT_FILE_NO_SUCH_FILE : + status == SILC_SFTP_STATUS_PERMISSION_DENIED ? + SILC_CLIENT_FILE_PERMISSION_DENIED : + SILC_CLIENT_FILE_ERROR), 0, 0, session->client_entry, session->session_id, session->filepath, session->monitor_context); return; @@ -403,7 +433,12 @@ static void silc_client_ftp_version(SilcSFTP sftp, /* Call monitor callback */ if (session->monitor) (*session->monitor)(session->client, session->conn, - SILC_CLIENT_FILE_MONITOR_ERROR, 0, 0, + SILC_CLIENT_FILE_MONITOR_ERROR, + (status == SILC_SFTP_STATUS_NO_SUCH_FILE ? + SILC_CLIENT_FILE_NO_SUCH_FILE : + status == SILC_SFTP_STATUS_PERMISSION_DENIED ? + SILC_CLIENT_FILE_PERMISSION_DENIED : + SILC_CLIENT_FILE_ERROR), 0, 0, session->client_entry, session->session_id, session->filepath, session->monitor_context); return; @@ -482,7 +517,8 @@ static void silc_client_ftp_start_key_agreement(SilcClientFtpSession session, /* Call monitor callback */ if (session->monitor) (*session->monitor)(session->client, session->conn, - SILC_CLIENT_FILE_MONITOR_KEY_AGREEMENT, 0, 0, + SILC_CLIENT_FILE_MONITOR_KEY_AGREEMENT, + SILC_CLIENT_FILE_OK, 0, 0, session->client_entry, session->session_id, NULL, session->monitor_context); @@ -557,7 +593,8 @@ SILC_TASK_CALLBACK(silc_client_ftp_process_key_agreement) /* Call monitor callback */ if (session->monitor) (*session->monitor)(session->client, session->conn, - SILC_CLIENT_FILE_MONITOR_ERROR, 0, 0, + SILC_CLIENT_FILE_MONITOR_ERROR, + SILC_CLIENT_FILE_ERROR, 0, 0, session->client_entry, session->session_id, session->filepath, session->monitor_context); return; @@ -576,7 +613,8 @@ SILC_TASK_CALLBACK(silc_client_ftp_process_key_agreement) /* Call monitor callback */ if (session->monitor) (*session->monitor)(session->client, session->conn, - SILC_CLIENT_FILE_MONITOR_ERROR, 0, 0, + SILC_CLIENT_FILE_MONITOR_ERROR, + SILC_CLIENT_FILE_ERROR, 0, 0, session->client_entry, session->session_id, session->filepath, session->monitor_context); return; @@ -588,7 +626,8 @@ SILC_TASK_CALLBACK(silc_client_ftp_process_key_agreement) /* Call monitor callback */ if (session->monitor) (*session->monitor)(session->client, session->conn, - SILC_CLIENT_FILE_MONITOR_KEY_AGREEMENT, 0, 0, + SILC_CLIENT_FILE_MONITOR_KEY_AGREEMENT, + SILC_CLIENT_FILE_OK, 0, 0, session->client_entry, session->session_id, NULL, session->monitor_context); @@ -663,7 +702,6 @@ void silc_client_ftp_session_free_client(SilcClientConnection conn, if (session->sock) session->sock->user_data = NULL; silc_client_ftp_session_free(session); - break; } } } @@ -816,7 +854,6 @@ silc_client_file_receive(SilcClient client, SilcClientConnection conn, SilcClientFileMonitor monitor, void *monitor_context, - SilcClientEntry client_entry, uint32 session_id) { SilcClientFtpSession session; @@ -845,7 +882,6 @@ silc_client_file_receive(SilcClient client, session->monitor = monitor; session->monitor_context = monitor_context; - session->client_entry = client_entry; session->conn = conn; /* If the hostname and port already exists then the remote client did @@ -878,7 +914,8 @@ silc_client_file_receive(SilcClient client, SILC_STR_UI_XNSTRING(keyagr->data, keyagr->len), SILC_STR_END); silc_client_packet_send(client, conn->sock, SILC_PACKET_FTP, - client_entry->id, SILC_ID_CLIENT, NULL, NULL, + session->client_entry->id, + SILC_ID_CLIENT, NULL, NULL, ftp->data, ftp->len, FALSE); silc_buffer_free(keyagr); @@ -959,7 +996,7 @@ static void silc_client_ftp_resolve_cb(SilcClient client, hostname = silc_key_agreement_get_hostname(payload); port = silc_key_agreement_get_port(payload); - if (session == SILC_LIST_END) { + if (session == SILC_LIST_END || (!hostname && !port)) { /* No session found, create one and let the application know about incoming file transfer request. */ @@ -968,6 +1005,7 @@ static void silc_client_ftp_resolve_cb(SilcClient client, session->session_id = ++conn->next_session_id; session->client = client; session->conn = conn; + session->client_entry = client_entry; silc_dlist_add(conn->ftp_sessions, session); /* Let the application know */ @@ -982,9 +1020,6 @@ static void silc_client_ftp_resolve_cb(SilcClient client, goto out; } - if (!hostname) - goto out; - session->hostname = strdup(hostname); session->port = port; @@ -994,7 +1029,8 @@ static void silc_client_ftp_resolve_cb(SilcClient client, /* Call monitor callback */ if (session->monitor) (*session->monitor)(session->client, session->conn, - SILC_CLIENT_FILE_MONITOR_ERROR, 0, 0, + SILC_CLIENT_FILE_MONITOR_ERROR, + SILC_CLIENT_FILE_ERROR, 0, 0, session->client_entry, session->session_id, session->filepath, session->monitor_context); } diff --git a/lib/silcclient/silcapi.h b/lib/silcclient/silcapi.h index c09023f9..ccc360e5 100644 --- a/lib/silcclient/silcapi.h +++ b/lib/silcclient/silcapi.h @@ -1772,7 +1772,7 @@ typedef enum { SILC_CLIENT_FILE_MONITOR_RECEIVE, SILC_CLIENT_FILE_MONITOR_GET, SILC_CLIENT_FILE_MONITOR_PUT, - SILC_CLIENT_FILE_MONITOR_CLOSE, + SILC_CLIENT_FILE_MONITOR_CLOSED, SILC_CLIENT_FILE_MONITOR_ERROR, } SilcClientMonitorStatus; @@ -1781,6 +1781,8 @@ typedef enum { SILC_CLIENT_FILE_ERROR, SILC_CLIENT_FILE_UNKNOWN_SESSION, SILC_CLIENT_FILE_ALREADY_STARTED, + SILC_CLIENT_FILE_NO_SUCH_FILE, + SILC_CLIENT_FILE_PERMISSION_DENIED, } SilcClientFileError; /****f* silcclient/SilcClientAPI/silc_client_file_receive @@ -1790,6 +1792,7 @@ typedef enum { * typedef void (*SilcClientFileMonitor)(SilcClient client, * SilcClientConnection conn, * SilcClientMonitorStatus status, + * SilcClientFileError error, * uint64 offset, * uint64 filesize, * SilcClientEntry client_entry, @@ -1810,6 +1813,7 @@ typedef enum { typedef void (*SilcClientFileMonitor)(SilcClient client, SilcClientConnection conn, SilcClientMonitorStatus status, + SilcClientFileError error, uint64 offset, uint64 filesize, SilcClientEntry client_entry, @@ -1865,7 +1869,6 @@ uint32 silc_client_file_send(SilcClient client, * SilcClientConnection conn, * SilcClientFileMonitor monitor, * void *monitor_context, - * SilcClientEntry client_entry, * uint32 session_id); * * DESCRIPTION @@ -1888,7 +1891,6 @@ silc_client_file_receive(SilcClient client, SilcClientConnection conn, SilcClientFileMonitor monitor, void *monitor_context, - SilcClientEntry client_entry, uint32 session_id); /****f* silcclient/SilcClientAPI/silc_client_file_close diff --git a/lib/silcutil/silcnet.h b/lib/silcutil/silcnet.h index 7278d237..124fcbf7 100644 --- a/lib/silcutil/silcnet.h +++ b/lib/silcutil/silcnet.h @@ -203,8 +203,7 @@ bool silc_net_is_ip(const char *addr); * binary form. * ***/ -bool silc_net_addr2bin(const char *addr, unsigned char *bin, - uint32 bin_len); +bool silc_net_addr2bin(const char *addr, void *bin, uint32 bin_len); /****f* silcutil/SilcNetAPI/silc_net_addr2bin_ne * diff --git a/lib/silcutil/unix/silcunixnet.c b/lib/silcutil/unix/silcunixnet.c index 4a97ee31..f2390057 100644 --- a/lib/silcutil/unix/silcunixnet.c +++ b/lib/silcutil/unix/silcunixnet.c @@ -57,8 +57,9 @@ int silc_net_create_server(int port, char *ip_addr) server.sin_port = htons(port); /* Convert IP address to network byte order */ - if (ip_addr) + if (ip_addr) { silc_net_addr2bin(ip_addr, (unsigned char *)&server.sin_addr.s_addr, len); + } else server.sin_addr.s_addr = INADDR_ANY; @@ -270,8 +271,7 @@ int silc_net_set_socket_nonblock(int sock) /* Converts the IP number string from numbers-and-dots notation to binary form. */ -bool silc_net_addr2bin(const char *addr, unsigned char *bin, - uint32 bin_len) +bool silc_net_addr2bin(const char *addr, void *bin, uint32 bin_len) { struct in_addr tmp; int ret; @@ -281,8 +281,7 @@ bool silc_net_addr2bin(const char *addr, unsigned char *bin, if (bin_len < 4) return FALSE; - SILC_PUT32_LSB(tmp.s_addr, bin); - + memcpy(bin, (unsigned char *)&tmp.s_addr, 4); return ret != 0; } diff --git a/lib/silcutil/win32/silcwin32net.c b/lib/silcutil/win32/silcwin32net.c index 25bde190..e8fcc26a 100644 --- a/lib/silcutil/win32/silcwin32net.c +++ b/lib/silcutil/win32/silcwin32net.c @@ -222,8 +222,7 @@ void silc_net_close_connection(int sock) /* Converts the IP number string from numbers-and-dots notation to binary form. */ -bool silc_net_addr2bin(const char *addr, unsigned char *bin, - uint32 bin_len) +bool silc_net_addr2bin(const char *addr, void *bin, uint32 bin_len); { unsigned long ret; @@ -232,8 +231,7 @@ bool silc_net_addr2bin(const char *addr, unsigned char *bin, if (bin_len < 4) return FALSE; - SILC_PUT32_LSB(ret, bin); - + memcpy(bin, (unsigned char *)&tmp.s_addr, 4); return ret != INADDR_NONE; } -- 2.24.0