From 73367e068c11918799576ad392b292e8e752b197 Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 8 Feb 2016 17:41:16 +0100 Subject: [PATCH] Native RST when data queued after close linger --- app/src/main/jni/netguard/netguard.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/main/jni/netguard/netguard.c b/app/src/main/jni/netguard/netguard.c index b8089093..fd074ded 100644 --- a/app/src/main/jni/netguard/netguard.c +++ b/app/src/main/jni/netguard/netguard.c @@ -711,7 +711,7 @@ int check_sessions(const struct arguments *args) { if (t->state != TCP_CLOSING && t->state != TCP_CLOSE && t->time + timeout < now) { // TODO send keep alives? log_android(ANDROID_LOG_WARN, "%s idle %d/%d sec ", session, now - t->time, timeout); - if (t->state == TCP_CLOSE_WAIT) { + if (t->state == TCP_CLOSE_WAIT && t->forward == NULL) { t->remote_seq++; // remote FIN if (write_fin_ack(args, t) >= 0) { log_android(ANDROID_LOG_WARN, "%s finished idle", session); @@ -719,8 +719,10 @@ int check_sessions(const struct arguments *args) { t->state = TCP_LAST_ACK; } } - else + else { + log_android(ANDROID_LOG_WARN, "%s reset idle", session); write_rst(args, t); + } } // Check closing sessions