forked from osmocom/wireshark
Create "decompressed Content" tab in hex bytes pane only if decompression actually done.
This is a revision of SVN #29086 which caused the "decompressed Content" tab in the hex bytes pane to always be displayed. svn path=/trunk/; revision=31755
This commit is contained in:
parent
bc80677038
commit
2241bbf094
|
@ -3882,7 +3882,6 @@ static void dissect_giop_common (tvbuff_t * tvb, packet_info * pinfo, proto_tree
|
|||
header.exception_id = NULL;
|
||||
|
||||
giop_header_tvb = tvb_new_subset (tvb, 0, GIOP_HEADER_SIZE, -1);
|
||||
payload_tvb = tvb_new_subset_remaining (tvb, GIOP_HEADER_SIZE);
|
||||
|
||||
/*
|
||||
* because I have added extra elements in MessageHeader struct
|
||||
|
@ -3921,6 +3920,7 @@ static void dissect_giop_common (tvbuff_t * tvb, packet_info * pinfo, proto_tree
|
|||
header.GIOP_version.major,
|
||||
header.GIOP_version.minor);
|
||||
}
|
||||
payload_tvb = tvb_new_subset_remaining (tvb, GIOP_HEADER_SIZE);
|
||||
call_dissector(data_handle,payload_tvb, pinfo, tree);
|
||||
return;
|
||||
}
|
||||
|
@ -4005,61 +4005,67 @@ static void dissect_giop_common (tvbuff_t * tvb, packet_info * pinfo, proto_tree
|
|||
if (header.flags & 0x08)
|
||||
{
|
||||
payload_tvb = tvb_child_uncompress(tvb, tvb, GIOP_HEADER_SIZE, tvb_length_remaining(tvb, GIOP_HEADER_SIZE ) );
|
||||
if (payload_tvb) {
|
||||
add_new_data_source (pinfo, payload_tvb, "decompressed Content");
|
||||
} else {
|
||||
/* Decompression failed. */
|
||||
/* XXX: Consider: add expert item ? do data dissection ? */
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
payload_tvb = tvb_new_subset_remaining (tvb, GIOP_HEADER_SIZE);
|
||||
}
|
||||
|
||||
if (payload_tvb) {
|
||||
add_new_data_source (pinfo, payload_tvb, "decompressed Content");
|
||||
switch (header.message_type)
|
||||
switch (header.message_type)
|
||||
{
|
||||
|
||||
case Request:
|
||||
if(header.GIOP_version.minor < 2)
|
||||
{
|
||||
|
||||
case Request:
|
||||
if(header.GIOP_version.minor < 2)
|
||||
{
|
||||
dissect_giop_request_1_1 (payload_tvb, pinfo, tree,
|
||||
&header, stream_is_big_endian);
|
||||
}
|
||||
else
|
||||
{
|
||||
dissect_giop_request_1_2 (payload_tvb, pinfo, tree,
|
||||
&header, stream_is_big_endian);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
|
||||
case Reply:
|
||||
if(header.GIOP_version.minor < 2)
|
||||
{
|
||||
dissect_giop_reply (payload_tvb, pinfo, tree, &header,
|
||||
stream_is_big_endian);
|
||||
}
|
||||
else
|
||||
{
|
||||
dissect_giop_reply_1_2 (payload_tvb, pinfo, tree,
|
||||
dissect_giop_request_1_1 (payload_tvb, pinfo, tree,
|
||||
&header, stream_is_big_endian);
|
||||
}
|
||||
break;
|
||||
case CancelRequest:
|
||||
dissect_giop_cancel_request(payload_tvb, pinfo, tree,
|
||||
stream_is_big_endian);
|
||||
break;
|
||||
case LocateRequest:
|
||||
dissect_giop_locate_request(payload_tvb, pinfo, tree, &header,
|
||||
stream_is_big_endian);
|
||||
break;
|
||||
case LocateReply:
|
||||
dissect_giop_locate_reply(payload_tvb, pinfo, tree, &header,
|
||||
stream_is_big_endian);
|
||||
break;
|
||||
case Fragment:
|
||||
dissect_giop_fragment(payload_tvb, pinfo, tree,
|
||||
stream_is_big_endian);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
dissect_giop_request_1_2 (payload_tvb, pinfo, tree,
|
||||
&header, stream_is_big_endian);
|
||||
}
|
||||
|
||||
} /* switch message_type */
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case Reply:
|
||||
if(header.GIOP_version.minor < 2)
|
||||
{
|
||||
dissect_giop_reply (payload_tvb, pinfo, tree, &header,
|
||||
stream_is_big_endian);
|
||||
}
|
||||
else
|
||||
{
|
||||
dissect_giop_reply_1_2 (payload_tvb, pinfo, tree,
|
||||
&header, stream_is_big_endian);
|
||||
}
|
||||
break;
|
||||
case CancelRequest:
|
||||
dissect_giop_cancel_request(payload_tvb, pinfo, tree,
|
||||
stream_is_big_endian);
|
||||
break;
|
||||
case LocateRequest:
|
||||
dissect_giop_locate_request(payload_tvb, pinfo, tree, &header,
|
||||
stream_is_big_endian);
|
||||
break;
|
||||
case LocateReply:
|
||||
dissect_giop_locate_reply(payload_tvb, pinfo, tree, &header,
|
||||
stream_is_big_endian);
|
||||
break;
|
||||
case Fragment:
|
||||
dissect_giop_fragment(payload_tvb, pinfo, tree,
|
||||
stream_is_big_endian);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
} /* switch message_type */
|
||||
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue