aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-tcp.c
diff options
context:
space:
mode:
authorJoerg Mayer <jmayer@loplof.de>2014-06-18 21:51:33 +0200
committerJörg Mayer <jmayer@loplof.de>2014-06-18 19:55:12 +0000
commit67dac5985f3a50b3341200b38bc1e46e1d5c8616 (patch)
treee1d8764b286f513e46c5a167a03683fb1c17e20f /epan/dissectors/packet-tcp.c
parent681d82309a581f706995bd76f0db6d98da75b008 (diff)
Change the indication for out-of-order packets. This is experimental
and will be verified by Jasper next week Change-Id: I3cda397285e8174abb9c05b7aaf7c1bfabdfc71a Reviewed-on: https://code.wireshark.org/review/2408 Reviewed-by: Jörg Mayer <jmayer@loplof.de>
Diffstat (limited to 'epan/dissectors/packet-tcp.c')
-rw-r--r--epan/dissectors/packet-tcp.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/epan/dissectors/packet-tcp.c b/epan/dissectors/packet-tcp.c
index 6e76be0de1..3dad57fb3a 100644
--- a/epan/dissectors/packet-tcp.c
+++ b/epan/dissectors/packet-tcp.c
@@ -1146,6 +1146,11 @@ finished_fwd:
&& tcpd->fwd->nextseq
&& (LT_SEQ(seq, tcpd->fwd->nextseq)) ) {
guint64 t;
+ guint64 ooo_thres;
+ if (tcpd->ts_first_rtt.nsecs == 0 && tcpd->ts_first_rtt.secs == 0)
+ ooo_thres = 200000000;
+ else
+ ooo_thres = tcpd->ts_first_rtt.nsecs + tcpd->ts_first_rtt.secs*1000000000;
if(tcpd->ta && (tcpd->ta->flags&TCP_A_KEEP_ALIVE) ) {
goto finished_checking_retransmission_type;
@@ -1170,16 +1175,13 @@ finished_fwd:
goto finished_checking_retransmission_type;
}
- /* If the segment came <3ms since the segment with the highest
+ /* If the segment came relativly close since the segment with the highest
* seen sequence number and it doesn't look like a retransmission
* then it is an OUT-OF-ORDER segment.
- * (3ms is an arbitrary number)
- * FIXME: Use initial RTT for this connection as a base value
- * or even better iRTT + 200ms
*/
t=(pinfo->fd->abs_ts.secs-tcpd->fwd->nextseqtime.secs)*1000000000;
t=t+(pinfo->fd->abs_ts.nsecs)-tcpd->fwd->nextseqtime.nsecs;
- if( t<3000000
+ if( t < ooo_thres
&& tcpd->fwd->nextseq != seq + seglen ) {
if(!tcpd->ta) {
tcp_analyze_get_acked_struct(pinfo->fd->num, seq, ack, TRUE, tcpd);