Some updates
This commit is contained in:
parent
b987583770
commit
c7751efa71
@ -273,7 +273,9 @@ namespace ts::server::file {
|
|||||||
NETWORK_IO_ERROR,
|
NETWORK_IO_ERROR,
|
||||||
|
|
||||||
UNEXPECTED_CLIENT_DISCONNECT,
|
UNEXPECTED_CLIENT_DISCONNECT,
|
||||||
UNEXPECTED_DISK_EOF
|
UNEXPECTED_DISK_EOF,
|
||||||
|
|
||||||
|
USER_REQUEST
|
||||||
} error_type{UNKNOWN};
|
} error_type{UNKNOWN};
|
||||||
std::string error_message{};
|
std::string error_message{};
|
||||||
};
|
};
|
||||||
|
@ -248,6 +248,15 @@ std::shared_ptr<ExecuteResponse<TransferInitError, std::shared_ptr<Transfer>>> L
|
|||||||
response->emplace_fail(TransferInitError::IO_ERROR, "file_size");
|
response->emplace_fail(TransferInitError::IO_ERROR, "file_size");
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(info.download_client_quota_limit > 0 && info.download_client_quota_limit <= transfer->expected_file_size) {
|
||||||
|
response->emplace_fail(TransferInitError::CLIENT_QUOTA_EXCEEDED, "");
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
if(info.download_server_quota_limit > 0 && info.download_server_quota_limit <= transfer->expected_file_size) {
|
||||||
|
response->emplace_fail(TransferInitError::SERVER_QUOTA_EXCEEDED, "");
|
||||||
|
return response;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -297,11 +306,13 @@ std::shared_ptr<ExecuteResponse<TransferActionError>> LocalFileTransfer::stop_tr
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(connected_transfer) {
|
if(connected_transfer) {
|
||||||
|
this->invoke_aborted_callback(connected_transfer, { TransferError::USER_REQUEST, "" });
|
||||||
logMessage(LOG_FT, "{} Stopping transfer due to an user request.", connected_transfer->log_prefix());
|
logMessage(LOG_FT, "{} Stopping transfer due to an user request.", connected_transfer->log_prefix());
|
||||||
|
|
||||||
std::unique_lock slock{connected_transfer->state_mutex};
|
std::unique_lock slock{connected_transfer->state_mutex};
|
||||||
this->disconnect_client(connected_transfer, slock, flush);
|
this->disconnect_client(connected_transfer, slock, flush);
|
||||||
} else {
|
} else {
|
||||||
|
this->invoke_aborted_callback(transfer, { TransferError::USER_REQUEST, "" });
|
||||||
logMessage(LOG_FT, "Removing pending file transfer for id {}", id);
|
logMessage(LOG_FT, "Removing pending file transfer for id {}", id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -123,6 +123,10 @@ void FileServerHandler::callback_transfer_aborted(const std::shared_ptr<transfer
|
|||||||
case ErrorType::UNEXPECTED_DISK_EOF:
|
case ErrorType::UNEXPECTED_DISK_EOF:
|
||||||
notify.put_unchecked(0, "status", (int) error::file_transfer_interrupted);
|
notify.put_unchecked(0, "status", (int) error::file_transfer_interrupted);
|
||||||
notify.put_unchecked(0, "msg", findError(error::file_transfer_interrupted).message);
|
notify.put_unchecked(0, "msg", findError(error::file_transfer_interrupted).message);
|
||||||
|
|
||||||
|
case ErrorType::USER_REQUEST:
|
||||||
|
notify.put_unchecked(0, "status", (int) error::file_transfer_canceled);
|
||||||
|
notify.put_unchecked(0, "msg", findError(error::file_transfer_canceled).message);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
notify.put_unchecked(0, "extra_msg", error.error_message);
|
notify.put_unchecked(0, "extra_msg", error.error_message);
|
||||||
|
@ -569,6 +569,11 @@ command_result ConnectedClient::handleCommandFTInitUpload(ts::Command &cmd) {
|
|||||||
std::shared_ptr<file::ExecuteResponse<file::transfer::TransferInitError, std::shared_ptr<file::transfer::Transfer>>> transfer_response{};
|
std::shared_ptr<file::ExecuteResponse<file::transfer::TransferInitError, std::shared_ptr<file::transfer::Transfer>>> transfer_response{};
|
||||||
|
|
||||||
info.max_bandwidth = -1;
|
info.max_bandwidth = -1;
|
||||||
|
{
|
||||||
|
auto max_quota = this->calculate_permission(permission::i_ft_max_bandwidth_upload, this->getClientId());
|
||||||
|
if(max_quota.has_value)
|
||||||
|
info.max_bandwidth = max_quota.value;
|
||||||
|
}
|
||||||
info.file_offset = 0;
|
info.file_offset = 0;
|
||||||
info.expected_file_size = cmd["size"].as<size_t>();
|
info.expected_file_size = cmd["size"].as<size_t>();
|
||||||
info.override_exiting = cmd["overwrite"].as<bool>();
|
info.override_exiting = cmd["overwrite"].as<bool>();
|
||||||
@ -721,6 +726,12 @@ command_result ConnectedClient::handleCommandFTInitDownload(ts::Command &cmd) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
info.max_bandwidth = -1;
|
info.max_bandwidth = -1;
|
||||||
|
{
|
||||||
|
auto max_quota = this->calculate_permission(permission::i_ft_max_bandwidth_download, this->getClientId());
|
||||||
|
if(max_quota.has_value)
|
||||||
|
info.max_bandwidth = max_quota.value;
|
||||||
|
}
|
||||||
|
|
||||||
info.file_offset = cmd["seekpos"].as<size_t>();
|
info.file_offset = cmd["seekpos"].as<size_t>();
|
||||||
info.override_exiting = false;
|
info.override_exiting = false;
|
||||||
info.file_path = cmd["name"].string();
|
info.file_path = cmd["name"].string();
|
||||||
|
2
shared
2
shared
@ -1 +1 @@
|
|||||||
Subproject commit a4febf7b5af191d41c566292958c55155128f16f
|
Subproject commit f404d5e1fa5ed1cfbe3ef9a97c0e81c1fba943ff
|
Loading…
Reference in New Issue
Block a user