From 221f3006fdc428bbf9237eb3e59304a5f085949d Mon Sep 17 00:00:00 2001 From: Guillaume Roguez <guillaume.roguez@savoirfairelinux.com> Date: Fri, 2 Mar 2018 09:55:51 -0500 Subject: [PATCH] data tx: fix GO msg GO message was send at every "incoming-read" loop. Only one msg is needed. Change-Id: I11a808eced6c08a9e76e9615d2218c43710f7546 --- src/ftp_server.cpp | 11 +++++++---- src/ftp_server.h | 1 + 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/ftp_server.cpp b/src/ftp_server.cpp index c850057d5c..29eb628888 100644 --- a/src/ftp_server.cpp +++ b/src/ftp_server.cpp @@ -70,6 +70,8 @@ FtpServer::startNewFile() if (!out_) { RING_DBG() << "[FTP] transfer aborted by client"; closed_ = true; // send NOK msg at next read() + } else { + go_ = true; } return bool(out_); } @@ -96,11 +98,12 @@ FtpServer::read(std::vector<uint8_t>& buffer) const } else { buffer.resize(0); } - return true; + } else if (go_) { + go_ = false; + buffer.resize(3); + buffer[0] = 'G'; buffer[1] = 'O'; buffer[2] = '\n'; + RING_DBG() << "[FTP] sending GO order"; } - buffer.resize(3); - buffer[0] = 'G'; buffer[1] = 'O'; buffer[2] = '\n'; - RING_DBG() << "[FTP] sending GO order"; return true; } diff --git a/src/ftp_server.h b/src/ftp_server.h index 081bdacfd0..deaf1e8baa 100644 --- a/src/ftp_server.h +++ b/src/ftp_server.h @@ -60,6 +60,7 @@ private: std::string displayName_; std::array<char, 1000> line_; mutable bool closed_ {false}; + mutable bool go_ {false}; FtpState state_ {FtpState::PARSE_HEADERS}; }; -- GitLab