+Mon Mar 15 21:10:08 EET 2004 Pekka Riikonen <priikone@silcnet.org>
+
+ * Destroy the file transfer session in silc_client_file_close
+ with timeout. Affected file lib/silcclient/client_ftp.c.
+
+ * Call SFTP server monitor in READ and WRITE after the actual
+ operations. Affected file lib/silcsftp/sftp_server.c.
+
Wed Mar 10 21:30:02 EET 2004 Pekka Riikonen <priikone@silcnet.org>
* Create one configure script from configure fragments
return SILC_CLIENT_FILE_OK;
}
+SILC_TASK_CALLBACK(silc_client_file_close_final)
+{
+ silc_client_ftp_session_free(context);
+}
+
/* Closes file transmission session indicated by the `session_id'.
If file transmission is being conducted it will be aborted
automatically. This function is also used to close the session
session->client_entry, session->session_id,
session->filepath, session->monitor_context);
- silc_client_ftp_session_free(session);
+ /* Destroy via timeout */
+ silc_schedule_task_add(session->client->schedule, 0,
+ silc_client_file_close_final, session,
+ 0, 1, SILC_TASK_TIMEOUT, SILC_TASK_PRI_NORMAL);
return SILC_CLIENT_FILE_OK;
}
break;
}
+ /* Read operation */
+ server->fs->fs->sftp_read(server->fs->fs_context, sftp,
+ handle, offset, len,
+ silc_sftp_server_data, SILC_32_TO_PTR(id));
+
/* Call monitor */
if (server->monitors & SILC_SFTP_MONITOR_READ && server->monitor) {
mdata.offset = offset;
(*server->monitor)(sftp, SILC_SFTP_MONITOR_READ, &mdata,
server->monitor_context);
}
-
- /* Read operation */
- server->fs->fs->sftp_read(server->fs->fs_context, sftp,
- handle, offset, len,
- silc_sftp_server_data, SILC_32_TO_PTR(id));
}
break;
break;
}
+ /* Write operation */
+ server->fs->fs->sftp_write(server->fs->fs_context, sftp, handle, offset,
+ (const unsigned char *)data, data_len,
+ silc_sftp_server_status, SILC_32_TO_PTR(id));
+
/* Call monitor */
if (server->monitors & SILC_SFTP_MONITOR_WRITE && server->monitor) {
mdata.offset = offset;
(*server->monitor)(sftp, SILC_SFTP_MONITOR_WRITE, &mdata,
server->monitor_context);
}
-
- /* Write operation */
- server->fs->fs->sftp_write(server->fs->fs_context, sftp, handle, offset,
- (const unsigned char *)data, data_len,
- silc_sftp_server_status, SILC_32_TO_PTR(id));
}
break;