From 9f8c5456befbf33cf8e02de99b6b9f5a417f006a Mon Sep 17 00:00:00 2001 From: Daniel Campora Date: Sat, 23 May 2015 19:56:22 +0200 Subject: cc3200: Reset the servers and close user sockets on WLAN disconection. This is needed to avoid half-open connections. --- cc3200/serverstask.c | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) (limited to 'cc3200/serverstask.c') diff --git a/cc3200/serverstask.c b/cc3200/serverstask.c index 80f22987f..732e6bbcc 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; } -- cgit v1.2.3