aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-spdy.c
diff options
context:
space:
mode:
authorAlexis La Goutte <alexis.lagoutte@gmail.com>2014-05-01 19:04:13 +0200
committerAnders Broman <a.broman58@gmail.com>2014-05-02 14:43:40 +0000
commitfa84054dc7c8a381d9665ddb2c6d22e0e96094b1 (patch)
treef2e751179dd13d8ac3a075d2b6301652679eb9f4 /epan/dissectors/packet-spdy.c
parent13e8983dbf7400cffdfee96f9a4fd6e429fb50b0 (diff)
Enhance display of SPDY packet (Remove some information from column)
Fix also tvb_length / tvb_length_remaining soft warning Change-Id: I3fd8f3a842fa84273b84ae36317e2c3fbdca076d Reviewed-on: https://code.wireshark.org/review/1461 Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-spdy.c')
-rw-r--r--epan/dissectors/packet-spdy.c92
1 files changed, 33 insertions, 59 deletions
diff --git a/epan/dissectors/packet-spdy.c b/epan/dissectors/packet-spdy.c
index fd23b5a807..07c94c7243 100644
--- a/epan/dissectors/packet-spdy.c
+++ b/epan/dissectors/packet-spdy.c
@@ -653,18 +653,15 @@ static spdy_stream_info_t* spdy_assemble_data_frames(spdy_conv_t *conv_data,
*/
static void dissect_spdy_stream_id_field(tvbuff_t *tvb,
int offset,
- packet_info *pinfo,
+ packet_info *pinfo _U_,
proto_tree *frame_tree,
const int hfindex)
{
guint32 stream_id = tvb_get_ntohl(tvb, offset) & SPDY_STREAM_ID_MASK;
- /* Add stream id to info column. */
- if (hfindex == hf_spdy_streamid) {
- col_append_fstr(pinfo->cinfo, COL_INFO, " Stream=%u", stream_id);
- }
/* Add stream id to tree. */
proto_tree_add_item(frame_tree, hfindex, tvb, offset, 4, ENC_BIG_ENDIAN);
+
if (hfindex == hf_spdy_streamid) {
proto_item_append_text(frame_tree, ", Stream: %u", stream_id);
}
@@ -722,7 +719,7 @@ static void dissect_spdy_flags(tvbuff_t *tvb,
static int dissect_spdy_data_payload(tvbuff_t *tvb,
int offset,
packet_info *pinfo,
- proto_tree *top_level_tree,
+ proto_tree *top_level_tree _U_,
proto_tree *spdy_tree,
proto_item *spdy_proto,
spdy_conv_t *conv_data,
@@ -733,9 +730,6 @@ static int dissect_spdy_data_payload(tvbuff_t *tvb,
guint num_data_frames;
gboolean dissected;
- col_add_fstr(pinfo->cinfo, COL_INFO, "DATA Stream=%d Length=%d",
- stream_id, frame->length);
-
/* Add frame description. */
proto_item_append_text(spdy_proto, ", Stream: %d, Length: %d",
stream_id,
@@ -781,7 +775,6 @@ static int dissect_spdy_data_payload(tvbuff_t *tvb,
if (!(frame->flags & SPDY_FLAG_FIN)) {
col_set_fence(pinfo->cinfo, COL_INFO);
- col_add_fstr(pinfo->cinfo, COL_INFO, " (partial entity)");
proto_item_append_text(spdy_proto, " (partial entity body)");
/* would like the proto item to say */
/* " (entity body fragment N of M)" */
@@ -831,16 +824,16 @@ static int dissect_spdy_data_payload(tvbuff_t *tvb,
(g_ascii_strcasecmp(si->content_encoding, "gzip") == 0 ||
g_ascii_strcasecmp(si->content_encoding, "deflate") == 0)) {
uncomp_tvb = tvb_child_uncompress(tvb, data_tvb, 0,
- tvb_length(data_tvb));
+ tvb_reported_length(data_tvb));
}
/*
* Add the encoded entity to the protocol tree
*/
- e_ti = proto_tree_add_text(top_level_tree, data_tvb,
- 0, tvb_length(data_tvb),
+ e_ti = proto_tree_add_text(spdy_tree, data_tvb,
+ 0, tvb_reported_length(data_tvb),
"Content-encoded entity body (%s): %u bytes",
si->content_encoding,
- tvb_length(data_tvb));
+ tvb_reported_length(data_tvb));
e_tree = proto_item_add_subtree(e_ti, ett_spdy_encoded_entity);
if (si->num_data_frames > 1) {
wmem_list_t *dflist = si->data_frames;
@@ -848,7 +841,7 @@ static int dissect_spdy_data_payload(tvbuff_t *tvb,
spdy_data_frame_t *df;
guint32 framenum;
ce_ti = proto_tree_add_text(e_tree, data_tvb, 0,
- tvb_length(data_tvb),
+ tvb_reported_length(data_tvb),
"Assembled from %d frames in packet(s)",
si->num_data_frames);
framenum = 0;
@@ -875,7 +868,7 @@ static int dissect_spdy_data_payload(tvbuff_t *tvb,
*
tvb_free(next_tvb);
*/
- proto_item_append_text(e_ti, " -> %u bytes", tvb_length(uncomp_tvb));
+ proto_item_append_text(e_ti, " -> %u bytes", tvb_reported_length(uncomp_tvb));
data_tvb = uncomp_tvb;
add_new_data_source(pinfo, data_tvb, "Uncompressed entity body");
} else {
@@ -930,7 +923,7 @@ static int dissect_spdy_data_payload(tvbuff_t *tvb,
/*
* We have a subdissector - call it.
*/
- dissected = call_dissector(handle, data_tvb, pinfo, top_level_tree);
+ dissected = call_dissector(handle, data_tvb, pinfo, spdy_tree);
} else {
dissected = FALSE;
}
@@ -940,10 +933,10 @@ static int dissect_spdy_data_payload(tvbuff_t *tvb,
* Calling the default media handle if there is a content-type that
* wasn't handled above.
*/
- call_dissector(media_handle, next_tvb, pinfo, top_level_tree);
+ call_dissector(media_handle, next_tvb, pinfo, spdy_tree);
} else {
/* Call the default data dissector */
- call_dissector(data_handle, next_tvb, pinfo, top_level_tree);
+ call_dissector(data_handle, next_tvb, pinfo, spdy_tree);
}
body_dissected:
@@ -1243,7 +1236,7 @@ static int dissect_spdy_header_payload(
int header_value_length;
/* Get header name details. */
- if (tvb_length_remaining(header_tvb, hdr_offset) < 4) {
+ if (tvb_reported_length_remaining(header_tvb, hdr_offset) < 4) {
expert_add_info_format(pinfo, frame_tree, &ei_spdy_mal_frame_data,
"Not enough frame data for header name size.");
break;
@@ -1251,7 +1244,7 @@ static int dissect_spdy_header_payload(
header_name_offset = hdr_offset;
header_name_length = tvb_get_ntohl(header_tvb, hdr_offset);
hdr_offset += 4;
- if (tvb_length_remaining(header_tvb, hdr_offset) < header_name_length) {
+ if (tvb_reported_length_remaining(header_tvb, hdr_offset) < header_name_length) {
expert_add_info_format(pinfo, frame_tree, &ei_spdy_mal_frame_data,
"Not enough frame data for header name.");
break;
@@ -1262,7 +1255,7 @@ static int dissect_spdy_header_payload(
hdr_offset += header_name_length;
/* Get header value details. */
- if (tvb_length_remaining(header_tvb, hdr_offset) < 4) {
+ if (tvb_reported_length_remaining(header_tvb, hdr_offset) < 4) {
expert_add_info_format(pinfo, frame_tree, &ei_spdy_mal_frame_data,
"Not enough frame data for header value size.");
break;
@@ -1270,7 +1263,7 @@ static int dissect_spdy_header_payload(
header_value_offset = hdr_offset;
header_value_length = tvb_get_ntohl(header_tvb, hdr_offset);
hdr_offset += 4;
- if (tvb_length_remaining(header_tvb, hdr_offset) < header_value_length) {
+ if (tvb_reported_length_remaining(header_tvb, hdr_offset) < header_value_length) {
expert_add_info_format(pinfo, frame_tree, &ei_spdy_mal_frame_data,
"Not enough frame data for header value.");
break;
@@ -1293,20 +1286,12 @@ static int dissect_spdy_header_payload(
header_tree = proto_item_add_subtree(header, ett_spdy_header);
/* Add header name. */
- /*header_name_ti = */proto_tree_add_item(header_tree,
- hf_spdy_header_name,
- header_tvb,
- header_name_offset,
- 4,
- ENC_NA);
+ proto_tree_add_item(header_tree, hf_spdy_header_name, header_tvb,
+ header_name_offset, 4, ENC_NA);
/* Add header value. */
- /*header_value_ti =*/ proto_tree_add_item(header_tree,
- hf_spdy_header_value,
- header_tvb,
- header_value_offset,
- 4,
- ENC_NA);
+ proto_tree_add_item(header_tree, hf_spdy_header_value, header_tvb,
+ header_value_offset, 4, ENC_NA);
}
/*
@@ -1335,10 +1320,10 @@ static int dissect_spdy_header_payload(
/* Set Info column. */
if (hdr_version != NULL) {
if (hdr_status == NULL) {
- col_append_fstr(pinfo->cinfo, COL_INFO, " Request=\"%s %s://%s%s %s\"",
+ proto_item_append_text(frame_tree, ", Request: %s %s://%s%s %s",
hdr_method, hdr_scheme, hdr_host, hdr_path, hdr_version);
} else {
- col_append_fstr(pinfo->cinfo, COL_INFO, " Response=\"%s %s\"",
+ proto_item_append_text(frame_tree, ", Response: %s %s",
hdr_status, hdr_version);
}
}
@@ -1381,8 +1366,6 @@ static int dissect_spdy_rst_stream_payload(
}
str = val_to_str(rst_status, rst_stream_status_names, "Unknown (%d)");
- /* Add status to info column. */
- col_append_fstr(pinfo->cinfo, COL_INFO, " Status=%s)", str);
proto_item_append_text(frame_tree, ", Status: %s", str);
@@ -1396,7 +1379,7 @@ static int dissect_spdy_settings_payload(
proto_tree *frame_tree,
const spdy_control_frame_info_t *frame) {
guint32 num_entries;
- proto_item *ti;
+ proto_item *ti, *ti_setting;
proto_tree *setting_tree;
proto_tree *flags_tree;
@@ -1423,8 +1406,8 @@ static int dissect_spdy_settings_payload(
guint32 setting_value;
/* Create key/value pair subtree. */
- ti = proto_tree_add_item(frame_tree, hf_spdy_setting, tvb, offset, 8, ENC_NA);
- setting_tree = proto_item_add_subtree(ti, ett_spdy_setting);
+ ti_setting = proto_tree_add_item(frame_tree, hf_spdy_setting, tvb, offset, 8, ENC_NA);
+ setting_tree = proto_item_add_subtree(ti_setting, ett_spdy_setting);
/* Set flags. */
if (setting_tree) {
@@ -1447,13 +1430,10 @@ static int dissect_spdy_settings_payload(
setting_value = tvb_get_ntohl(tvb, offset);
proto_tree_add_item(setting_tree, hf_spdy_setting_value, tvb, offset, 4, ENC_BIG_ENDIAN);
- proto_item_set_text(setting_tree, "Setting, %s: %u", setting_id_str, setting_value);
+ proto_item_append_text(ti_setting, ", %s: %u", setting_id_str, setting_value);
proto_item_append_text(frame_tree, ", %s: %u", setting_id_str, setting_value);
offset += 4;
- /* Append to info column. */
- col_append_fstr(pinfo->cinfo, COL_INFO, " %s=%u", setting_id_str, setting_value);
-
/* Increment. */
--num_entries;
}
@@ -1461,7 +1441,7 @@ static int dissect_spdy_settings_payload(
return frame->length;
}
-static int dissect_spdy_ping_payload(tvbuff_t *tvb, int offset, packet_info *pinfo,
+static int dissect_spdy_ping_payload(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
proto_tree *frame_tree, const spdy_control_frame_info_t *frame)
{
/* Get ping ID. */
@@ -1471,9 +1451,6 @@ static int dissect_spdy_ping_payload(tvbuff_t *tvb, int offset, packet_info *pin
proto_tree_add_item(frame_tree, hf_spdy_ping_id, tvb, offset, 4, ENC_BIG_ENDIAN);
proto_item_append_text(frame_tree, ", ID: %u", ping_id);
- /* Add ping ID to info column. */
- col_append_fstr(pinfo->cinfo, COL_INFO, " ID=%u", ping_id);
-
return frame->length;
}
@@ -1500,7 +1477,7 @@ static int dissect_spdy_goaway_payload(tvbuff_t *tvb,
}
/* Add status to info column. */
- col_append_fstr(pinfo->cinfo, COL_INFO, " Status=%s)",
+ proto_item_append_text(frame_tree, " Status=%s)",
val_to_str(goaway_status, rst_stream_status_names, "Unknown (%d)"));
return frame->length;
@@ -1526,9 +1503,6 @@ static int dissect_spdy_window_update_payload(
proto_tree_add_item(frame_tree, hf_spdy_window_update_delta, tvb, offset, 4, ENC_BIG_ENDIAN);
proto_item_append_text(frame_tree, ", Delta: %u", window_update_delta);
- /* Add delta to info column. */
- col_append_fstr(pinfo->cinfo, COL_INFO, " Delta=%u", window_update_delta);
-
return frame->length;
}
@@ -1587,9 +1561,9 @@ int dissect_spdy_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void
/* Add frame info. */
frame_type_name = val_to_str(frame.type, frame_type_names, "Unknown(%d)");
- col_add_str(pinfo->cinfo, COL_INFO, frame_type_name);
+ col_append_sep_str(pinfo->cinfo, COL_INFO, ", ", frame_type_name);
- proto_item_append_text(spdy_tree, ", %s", frame_type_name);
+ proto_item_append_text(spdy_tree, ": %s", frame_type_name);
/* Add flags. */
frame.flags = tvb_get_guint8(tvb, offset);
@@ -1608,10 +1582,10 @@ int dissect_spdy_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void
/*
* Make sure there's as much data as the frame header says there is.
*/
- if ((guint)tvb_length_remaining(tvb, offset) < frame.length) {
+ if ((guint)tvb_reported_length_remaining(tvb, offset) < frame.length) {
expert_add_info_format(pinfo, tree, &ei_spdy_mal_frame_data,
"Not enough frame data: %d vs. %d",
- frame.length, tvb_length_remaining(tvb, offset));
+ frame.length, tvb_reported_length_remaining(tvb, offset));
return -1;
}
@@ -1862,7 +1836,7 @@ void proto_register_spdy(void)
},
{ &hf_spdy_setting,
{ "Setting", "spdy.setting",
- FT_BYTES, BASE_NONE, NULL, 0x0,
+ FT_NONE, BASE_NONE, NULL, 0x0,
NULL, HFILL
}
},