]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
stream: don't send EOF to AppLayer too soon 1247/head
authorVictor Julien <victor@inliniac.net>
Wed, 10 Dec 2014 16:31:57 +0000 (17:31 +0100)
committerVictor Julien <victor@inliniac.net>
Wed, 10 Dec 2014 16:54:07 +0000 (17:54 +0100)
Sending EOF too soon results in the AppLayer cleaning up prematurely.

src/stream-tcp-reassemble.c

index 2d1170a14c9039fdbeddb8a2927d27629b3c6ee2..5333c3e6caee63f3aae70a8bba437a453b2c64e5 100644 (file)
@@ -1919,7 +1919,10 @@ int StreamTcpReassembleHandleSegmentHandleData(ThreadVars *tv, TcpReassemblyThre
     if (!(stream->flags & STREAMTCP_STREAM_FLAG_APPPROTO_DETECTION_COMPLETED)) {\
         flag |= STREAM_START; \
     } \
-    if (stream->flags & STREAMTCP_STREAM_FLAG_CLOSE_INITIATED) {    \
+    if (ssn->state == TCP_CLOSED) { \
+        flag |= STREAM_EOF; \
+    } \
+    if (p->flags & PKT_PSEUDO_STREAM_END) { \
         flag |= STREAM_EOF; \
     } \
     if ((p)->flowflags & FLOW_PKT_TOSERVER) { \
@@ -1937,7 +1940,10 @@ int StreamTcpReassembleHandleSegmentHandleData(ThreadVars *tv, TcpReassemblyThre
     if (!(stream->flags & STREAMTCP_STREAM_FLAG_APPPROTO_DETECTION_COMPLETED)) {\
         flag |= STREAM_START; \
     } \
-    if (stream->flags & STREAMTCP_STREAM_FLAG_CLOSE_INITIATED) {    \
+    if (ssn->state == TCP_CLOSED) { \
+        flag |= STREAM_EOF; \
+    } \
+    if (p->flags & PKT_PSEUDO_STREAM_END) { \
         flag |= STREAM_EOF; \
     } \
     if ((p)->flowflags & FLOW_PKT_TOSERVER) { \