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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user