summaryrefslogtreecommitdiff
path: root/epan/dissectors/packet-http.c
diff options
context:
space:
mode:
Diffstat (limited to 'epan/dissectors/packet-http.c')
-rw-r--r--epan/dissectors/packet-http.c66
1 files changed, 22 insertions, 44 deletions
diff --git a/epan/dissectors/packet-http.c b/epan/dissectors/packet-http.c
index 58978279fc..2cf673c122 100644
--- a/epan/dissectors/packet-http.c
+++ b/epan/dissectors/packet-http.c
@@ -1004,18 +1004,13 @@ dissect_http_message(tvbuff_t *tvb, int offset, packet_info *pinfo,
*/
saw_req_resp_or_header = TRUE;
if (is_request_or_reply) {
- char *text = tvb_format_text(tvb, offset, next_offset - offset);
- if (tree) {
- hdr_item = proto_tree_add_text(http_tree, tvb,
- offset, next_offset - offset, "%s", text);
- }
+ char *text = tvb_format_text(tvb, offset, next_offset - offset);
+
+ req_tree = proto_tree_add_subtree(http_tree, tvb,
+ offset, next_offset - offset, ett_http_request, &hdr_item, text);
+
expert_add_info_format(pinfo, hdr_item, &ei_http_chat, "%s", text);
if (reqresp_dissector) {
- if (tree)
- req_tree = proto_item_add_subtree(hdr_item, ett_http_request);
- else
- req_tree = NULL;
-
reqresp_dissector(tvb, req_tree, offset, line,
lineend, conv_data);
}
@@ -1343,13 +1338,11 @@ dissect_http_message(tvbuff_t *tvb, int offset, packet_info *pinfo,
/*
* Add the encoded entity to the protocol tree
*/
- e_ti = proto_tree_add_text(http_tree, next_tvb,
- 0, tvb_length(next_tvb),
+ e_tree = proto_tree_add_subtree_format(http_tree, next_tvb,
+ 0, tvb_length(next_tvb), ett_http_encoded_entity, &e_ti,
"Content-encoded entity body (%s): %u bytes",
headers.content_encoding,
tvb_length(next_tvb));
- e_tree = proto_item_add_subtree(e_ti,
- ett_http_encoded_entity);
if (uncomp_tvb != NULL) {
/*
@@ -1630,8 +1623,8 @@ chunked_encoding_dissector(tvbuff_t **tvb_ptr, packet_info *pinfo,
tvbuff_t *tvb = NULL;
tvbuff_t *new_tvb = NULL;
gint chunked_data_size = 0;
- proto_tree *subtree = NULL;
- proto_item *ti = NULL;
+ proto_tree *subtree;
+ proto_item *ti;
if (tvb_ptr == NULL || *tvb_ptr == NULL) {
return 0;
@@ -1641,12 +1634,8 @@ chunked_encoding_dissector(tvbuff_t **tvb_ptr, packet_info *pinfo,
datalen = tvb_reported_length_remaining(tvb, offset);
- if (tree) {
- ti = proto_tree_add_text(tree, tvb, offset, datalen,
- "HTTP chunked response");
- subtree = proto_item_add_subtree(ti, ett_http_chunked_response);
- }
-
+ subtree = proto_tree_add_subtree(tree, tvb, offset, datalen,
+ ett_http_chunked_response, NULL, "HTTP chunked response");
while (datalen > 0) {
proto_item *chunk_ti = NULL;
@@ -1733,20 +1722,16 @@ chunked_encoding_dissector(tvbuff_t **tvb_ptr, packet_info *pinfo,
if (subtree) {
if(chunk_size == 0) {
- chunk_ti = proto_tree_add_text(subtree, tvb,
- offset,
- chunk_offset - offset + chunk_size + 2,
- "End of chunked encoding");
+ chunk_subtree = proto_tree_add_subtree(subtree, tvb,
+ offset, chunk_offset - offset + chunk_size + 2,
+ ett_http_chunk_data, NULL, "End of chunked encoding");
} else {
- chunk_ti = proto_tree_add_text(subtree, tvb,
+ chunk_subtree = proto_tree_add_subtree_format(subtree, tvb,
offset,
chunk_offset - offset + chunk_size + 2,
- "Data chunk (%u octets)", chunk_size);
+ ett_http_chunk_data, NULL, "Data chunk (%u octets)", chunk_size);
}
- chunk_subtree = proto_item_add_subtree(chunk_ti,
- ett_http_chunk_data);
-
proto_tree_add_text(chunk_subtree, tvb, offset,
chunk_offset - offset, "Chunk size: %u octets",
chunk_size);
@@ -1825,13 +1810,8 @@ chunked_encoding_dissector(tvbuff_t **tvb_ptr, packet_info *pinfo,
datalen = tvb_reported_length_remaining(tvb, offset);
- subtree = NULL;
- if (tree) {
- proto_item *ti;
- ti = proto_tree_add_text(tree, tvb, offset, datalen,
- "HTTP chunked response");
- subtree = proto_item_add_subtree(ti, ett_http_chunked_response);
- }
+ subtree = proto_tree_add_subtree(tree, tvb, offset, datalen,
+ ett_http_chunked_response, NULL, "HTTP chunked response");
/* Dechunk the "chunked response" to a new memory buffer */
orig_datalen = datalen;
@@ -1889,24 +1869,22 @@ chunked_encoding_dissector(tvbuff_t **tvb_ptr, packet_info *pinfo,
raw_len += chunk_size;
if (subtree) {
- proto_item *chunk_ti;
proto_tree *chunk_subtree;
if(chunk_size == 0) {
- chunk_ti = proto_tree_add_text(subtree, tvb,
+ chunk_subtree = proto_tree_add_subtree(subtree, tvb,
offset,
chunk_offset - offset + chunk_size + 2,
+ ett_http_chunk_data, NULL,
"End of chunked encoding");
} else {
- chunk_ti = proto_tree_add_text(subtree, tvb,
+ chunk_subtree = proto_tree_add_subtree_format(subtree, tvb,
offset,
chunk_offset - offset + chunk_size + 2,
+ ett_http_chunk_data, NULL,
"Data chunk (%u octets)", chunk_size);
}
- chunk_subtree = proto_item_add_subtree(chunk_ti,
- ett_http_chunk_data);
-
proto_tree_add_text(chunk_subtree, tvb, offset,
chunk_offset - offset, "Chunk size: %u octets",
chunk_size);