diff options
Diffstat (limited to 'cc3200/serverstask.c')
-rw-r--r-- | cc3200/serverstask.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/cc3200/serverstask.c b/cc3200/serverstask.c index 80f22987fe..732e6bbcca 100644 --- a/cc3200/serverstask.c +++ b/cc3200/serverstask.c @@ -53,12 +53,13 @@ typedef struct { volatile bool enabled; volatile bool do_disable; volatile bool do_enable; + volatile bool do_reset; }servers_Data_t; /****************************************************************************** DECLARE PRIVATE DATA ******************************************************************************/ -static servers_Data_t servers_data = {.enabled = false, .do_disable = false, .do_enable = false}; +static servers_Data_t servers_data = {.enabled = false, .do_disable = false, .do_enable = false, .do_reset = false}; static volatile bool sleep_sockets = false; /****************************************************************************** @@ -103,11 +104,21 @@ void TASK_Servers (void *pvParameters) { servers_data.enabled = false; } - if (cycle) { - telnet_run(); + if (servers_data.do_reset) { + telnet_reset(); + ftp_reset(); + servers_data.do_reset = false; + // resetting the servers is needed to preven half-open sockets + // and we should also close all user sockets + modusocket_close_all_user_sockets(); } else { - ftp_run(); + if (cycle) { + telnet_run(); + } + else { + ftp_run(); + } } // set the alive flag for the wdt @@ -137,6 +148,10 @@ void servers_stop (void) { HAL_Delay (SERVERS_CYCLE_TIME_MS * 5); } +void servers_reset (void) { + servers_data.do_reset = true; +} + bool servers_are_enabled (void) { return servers_data.enabled; } |