aboutsummaryrefslogtreecommitdiffstats
path: root/packet-wtp.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2002-05-27 20:33:25 +0000
committerGuy Harris <guy@alum.mit.edu>2002-05-27 20:33:25 +0000
commit8f65a5b2e3020d5bcfa168e40119e64a91277044 (patch)
tree0b7082c725924d021ee6c390cc97a48ecbeb29ee /packet-wtp.c
parent259903dc66626a89bb3ec046c94d55d8bfa6a990 (diff)
From Kari Heikkila: fix for WTP PDUs not containing user data.
svn path=/trunk/; revision=5574
Diffstat (limited to 'packet-wtp.c')
-rw-r--r--packet-wtp.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/packet-wtp.c b/packet-wtp.c
index f39c14e2f1..b570c7feca 100644
--- a/packet-wtp.c
+++ b/packet-wtp.c
@@ -2,7 +2,7 @@
*
* Routines to dissect WTP component of WAP traffic.
*
- * $Id: packet-wtp.c,v 1.32 2002/04/17 08:30:17 guy Exp $
+ * $Id: packet-wtp.c,v 1.33 2002/05/27 20:33:24 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -437,7 +437,8 @@ dissect_wtp_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
it, if possible, summarize what's in the packet, so that a user looking
at the list of packets can tell what type of packet it is. */
if (check_col(pinfo->cinfo, COL_INFO) &&
- (tvb_length_remaining(tvb, offCur + cbHeader + vHeader) <= 0)) {
+ ((tvb_length_remaining(tvb, offCur + cbHeader + vHeader) <= 0) ||
+ (pdut == ACK) || (pdut==NEGATIVE_ACK) || (pdut==ABORT)) ) {
#ifdef DEBUG
fprintf( stderr, "dissect_wtp: (6) About to set info_col header to %s\n", szInfo );
#endif
@@ -574,10 +575,11 @@ dissect_wtp_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
#endif
}
/*
- * Any remaining data ought to be WSP data,
- * so hand off (defragmented) to the WSP dissector
+ * Any remaining data ought to be WSP data (if not WTP ACK, NACK
+ * or ABORT pdu), so hand off (defragmented) to the WSP dissector
*/
- if (tvb_length_remaining(tvb, offCur + cbHeader + vHeader) > 0)
+ if ( (tvb_length_remaining(tvb, offCur + cbHeader + vHeader) > 0) &&
+ ! ((pdut==ACK) || (pdut==NEGATIVE_ACK) || (pdut==ABORT)))
{
int dataOffset = offCur + cbHeader + vHeader;
guint32 dataLen = tvb_length_remaining(tvb, offCur + cbHeader + vHeader);