Added file transfer status
This commit is contained in:
@@ -478,9 +478,7 @@ void LocalFileTransfer::callback_transfer_network_read(int fd, short events, voi
|
||||
transfer->log_prefix(), transfer->statistics.file_transferred.total_bytes, transfer->transfer->expected_file_size - transfer->transfer->file_offset);
|
||||
}
|
||||
|
||||
transfer->handle->report_transfer_statistics(transfer->shared_from_this());
|
||||
if(auto callback{transfer->handle->callback_transfer_aborted}; callback)
|
||||
callback(transfer->transfer, { TransferError::UNEXPECTED_CLIENT_DISCONNECT, "" });
|
||||
transfer->handle->invoke_aborted_callback(transfer->shared_from_this(), { TransferError::UNEXPECTED_CLIENT_DISCONNECT, "" });
|
||||
break;
|
||||
}
|
||||
case FileClient::STATE_DISCONNECTING:
|
||||
@@ -515,9 +513,8 @@ void LocalFileTransfer::callback_transfer_network_read(int fd, short events, voi
|
||||
transfer->log_prefix(), transfer->statistics.file_transferred.total_bytes, transfer->transfer->expected_file_size - transfer->transfer->file_offset, errno, strerror(errno));
|
||||
}
|
||||
|
||||
transfer->handle->report_transfer_statistics(transfer->shared_from_this());
|
||||
if(auto callback{transfer->handle->callback_transfer_aborted}; callback)
|
||||
callback(transfer->transfer, { TransferError::NETWORK_IO_ERROR, strerror(errno) });
|
||||
|
||||
transfer->handle->invoke_aborted_callback(transfer->shared_from_this(), { TransferError::NETWORK_IO_ERROR, strerror(errno) });
|
||||
break;
|
||||
case FileClient::STATE_DISCONNECTING:
|
||||
case FileClient::STATE_DISCONNECTED:
|
||||
@@ -623,10 +620,7 @@ void LocalFileTransfer::callback_transfer_network_write(int fd, short events, vo
|
||||
logError(LOG_FT, "{} Client disconnected unexpectedly on write. Send {} bytes out of {}.",
|
||||
transfer->log_prefix(), transfer->statistics.file_transferred.total_bytes, transfer->transfer->expected_file_size - transfer->transfer->file_offset);
|
||||
|
||||
transfer->handle->report_transfer_statistics(transfer->shared_from_this());
|
||||
if(auto callback{transfer->handle->callback_transfer_aborted}; callback)
|
||||
callback(transfer->transfer, { TransferError::UNEXPECTED_CLIENT_DISCONNECT, strerror(errno) });
|
||||
|
||||
transfer->handle->invoke_aborted_callback(transfer->shared_from_this(), { TransferError::UNEXPECTED_CLIENT_DISCONNECT, "" });
|
||||
{
|
||||
std::unique_lock slock{transfer->state_mutex};
|
||||
transfer->handle->disconnect_client(transfer->shared_from_this(), slock, true);
|
||||
@@ -640,10 +634,7 @@ void LocalFileTransfer::callback_transfer_network_write(int fd, short events, vo
|
||||
logError(LOG_FT, "{} Received network write error. Send {} bytes out of {}. Closing transfer.",
|
||||
transfer->log_prefix(), transfer->statistics.file_transferred.total_bytes, transfer->transfer->expected_file_size - transfer->transfer->file_offset);
|
||||
|
||||
transfer->handle->report_transfer_statistics(transfer->shared_from_this());
|
||||
if(auto callback{transfer->handle->callback_transfer_aborted}; callback)
|
||||
callback(transfer->transfer, { TransferError::NETWORK_IO_ERROR, strerror(errno) });
|
||||
|
||||
transfer->handle->invoke_aborted_callback(transfer->shared_from_this(), { TransferError::NETWORK_IO_ERROR, strerror(errno) });
|
||||
{
|
||||
std::unique_lock slock{transfer->state_mutex};
|
||||
transfer->handle->disconnect_client(transfer->shared_from_this(), slock, false);
|
||||
@@ -780,20 +771,14 @@ size_t LocalFileTransfer::handle_transfer_read_raw(const std::shared_ptr<FileCli
|
||||
|
||||
case TransferKeyApplyResult::FILE_ERROR:
|
||||
assert(client->transfer);
|
||||
|
||||
this->report_transfer_statistics(client);
|
||||
if(auto callback{this->callback_transfer_aborted}; callback)
|
||||
callback(client->transfer, { TransferError::DISK_INITIALIZE_ERROR, error_detail });
|
||||
this->invoke_aborted_callback(client, { TransferError::DISK_INITIALIZE_ERROR, error_detail });
|
||||
|
||||
logMessage(LOG_FT, "{} Disconnecting client because we failed to open the target file.", client->log_prefix());
|
||||
break;
|
||||
|
||||
case TransferKeyApplyResult::INTERNAL_ERROR:
|
||||
default:
|
||||
this->report_transfer_statistics(client);
|
||||
if(auto callback{this->callback_transfer_aborted}; client->transfer && callback)
|
||||
callback(client->transfer, { TransferError::UNKNOWN, error_detail });
|
||||
|
||||
this->invoke_aborted_callback(client, { TransferError::UNKNOWN, error_detail });
|
||||
logMessage(LOG_FT, "{} Disconnecting client because of an unknown key initialize error ({}).", client->log_prefix(), (int) key_result);
|
||||
break;
|
||||
}
|
||||
@@ -872,10 +857,7 @@ size_t LocalFileTransfer::handle_transfer_read(const std::shared_ptr<FileClient>
|
||||
case TransferKeyApplyResult::FILE_ERROR:
|
||||
assert(client->transfer);
|
||||
|
||||
this->report_transfer_statistics(client);
|
||||
if(auto callback{this->callback_transfer_aborted}; callback)
|
||||
callback(client->transfer, { TransferError::DISK_INITIALIZE_ERROR, error_detail });
|
||||
|
||||
this->invoke_aborted_callback(client, { TransferError::DISK_INITIALIZE_ERROR, error_detail });
|
||||
logMessage(LOG_FT, "{} Disconnecting client because we failed to open the target file.", client->log_prefix());
|
||||
response.code = http::code::code(500, "Internal Server Error");
|
||||
response.setHeader("x-error-message", { error_detail });
|
||||
@@ -889,10 +871,7 @@ size_t LocalFileTransfer::handle_transfer_read(const std::shared_ptr<FileClient>
|
||||
|
||||
case TransferKeyApplyResult::INTERNAL_ERROR:
|
||||
default:
|
||||
this->report_transfer_statistics(client);
|
||||
if(auto callback{this->callback_transfer_aborted}; client->transfer && callback)
|
||||
callback(client->transfer, { TransferError::UNKNOWN, error_detail });
|
||||
|
||||
this->invoke_aborted_callback(client, { TransferError::UNKNOWN, error_detail });
|
||||
logMessage(LOG_FT, "{} Disconnecting client because of an unknown key initialize error ({}).", client->log_prefix(), (int) key_result);
|
||||
response.code = http::code::code(500, "Internal Server Error");
|
||||
response.setHeader("x-error-message", { error_detail.empty() ? "failed to initialize transfer" : error_detail });
|
||||
|
||||
Reference in New Issue
Block a user