aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-tcp.c
diff options
context:
space:
mode:
authorSake Blok <sake@euronet.nl>2013-06-07 06:49:15 +0000
committerSake Blok <sake@euronet.nl>2013-06-07 06:49:15 +0000
commitf3ba09b543761927b4837a1584deab3bb9f30c53 (patch)
treecf8991d16c347742e512afa57cf69aa902ab63b2 /epan/dissectors/packet-tcp.c
parent506b417907f0fcb2dfb097cdb0ccdd5fab3a4aad (diff)
Mark retransmitted SYN and FIN packets as retransmissions.
svn path=/trunk/; revision=49829
Diffstat (limited to 'epan/dissectors/packet-tcp.c')
-rw-r--r--epan/dissectors/packet-tcp.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/epan/dissectors/packet-tcp.c b/epan/dissectors/packet-tcp.c
index 101bea784c..a548302d9c 100644
--- a/epan/dissectors/packet-tcp.c
+++ b/epan/dissectors/packet-tcp.c
@@ -1060,14 +1060,15 @@ finished_fwd:
/* RETRANSMISSION/FAST RETRANSMISSION/OUT-OF-ORDER
- * If the segments contains data and if it does not advance
- * sequence number it must be either of these three.
+ * If the segments contains data (or is a SYN or a FIN) and
+ * if it does not advance sequence number it must be either
+ * of these three.
* Only test for this if we know what the seq number should be
* (tcpd->fwd->nextseq)
*
* Note that a simple KeepAlive is not a retransmission
*/
- if( seglen>0
+ if( (seglen>0 || flags&(TH_SYN|TH_FIN))
&& tcpd->fwd->nextseq
&& (LT_SEQ(seq, tcpd->fwd->nextseq)) ) {
guint64 t;