From b2af2f32d47276472a3fa42c594e1c9646dbb427 Mon Sep 17 00:00:00 2001 From: Oleg Date: Wed, 15 Jul 2020 11:16:29 +0300 Subject: [PATCH] mavlink_ftp: close session without activity 10s inactivity timeout to close session --- src/modules/mavlink/mavlink_ftp.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/modules/mavlink/mavlink_ftp.cpp b/src/modules/mavlink/mavlink_ftp.cpp index 79b628ad26..81c4f2e0fb 100644 --- a/src/modules/mavlink/mavlink_ftp.cpp +++ b/src/modules/mavlink/mavlink_ftp.cpp @@ -51,6 +51,7 @@ #include #endif +using namespace time_literals; constexpr const char MavlinkFTP::_root_dir[]; @@ -960,7 +961,7 @@ void MavlinkFTP::send(const hrt_abstime t) if (_work_buffer1 || _work_buffer2) { // free the work buffers if they are not used for a while - if (hrt_elapsed_time(&_last_work_buffer_access) > 2000000) { + if (hrt_elapsed_time(&_last_work_buffer_access) > 2_s) { if (_work_buffer1) { delete[] _work_buffer1; _work_buffer1 = nullptr; @@ -971,6 +972,16 @@ void MavlinkFTP::send(const hrt_abstime t) _work_buffer2 = nullptr; } } + + } else if (_session_info.fd != -1) { + // close session without activity + if (hrt_elapsed_time(&_last_work_buffer_access) > 10_s) { + ::close(_session_info.fd); + _session_info.fd = -1; + _session_info.stream_download = false; + _last_reply_valid = false; + PX4_WARN("Session was closed without activity"); + } } // Anything to stream?