diff options
author | Anders Broman <anders.broman@ericsson.com> | 2013-05-15 16:53:19 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2013-05-15 16:53:19 +0000 |
commit | 653006b4b897494e9587b795f6edd2077e4a443a (patch) | |
tree | a72152c83d8e2e3e9a1407c273bc40afc9f9c032 /epan/dissectors/packet-sip.c | |
parent | aefb9200d1e6330562942859d6a8c16312d3e102 (diff) |
- packet-sip.c adds per-packet data twice only add new packet data if no previous data exists.
- Use the key as SIP can occure more than once in a frame.
svn path=/trunk/; revision=49315
Diffstat (limited to 'epan/dissectors/packet-sip.c')
-rw-r--r-- | epan/dissectors/packet-sip.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/epan/dissectors/packet-sip.c b/epan/dissectors/packet-sip.c index 469a59917f..ab2af62c01 100644 --- a/epan/dissectors/packet-sip.c +++ b/epan/dissectors/packet-sip.c @@ -1731,6 +1731,10 @@ dissect_sip_reason_header(tvbuff_t *tvb, proto_tree *tree, gint start_offset, gi current_offset = start_offset; semi_colon_offset = tvb_find_guint8(tvb, current_offset, line_end_offset-current_offset, ';'); + + if(semi_colon_offset == -1) + return; + length = semi_colon_offset - current_offset; proto_tree_add_text(tree, tvb, start_offset, length, "Reason Protocols: %s", tvb_format_text(tvb, start_offset, length)); @@ -3802,11 +3806,11 @@ guint sip_is_packet_resend(packet_info *pinfo, if (sip_frame_result == NULL) { sip_frame_result = se_new0(sip_frame_result_value); + p_add_proto_data(pinfo->fd, proto_sip, pinfo->curr_layer_num, sip_frame_result); } /* Store return value with this packet */ sip_frame_result->original_frame_num = result; - p_add_proto_data(pinfo->fd, proto_sip, 0, sip_frame_result); return result; } @@ -3901,11 +3905,12 @@ guint sip_find_request(packet_info *pinfo, /* Store return value with this packet */ - sip_frame_result = (sip_frame_result_value *)p_get_proto_data(pinfo->fd, proto_sip, 0); + sip_frame_result = (sip_frame_result_value *)p_get_proto_data(pinfo->fd, proto_sip, pinfo->curr_layer_num); if (sip_frame_result == NULL) { /* Allocate and set all values to zero */ sip_frame_result = se_new0(sip_frame_result_value); + p_add_proto_data(pinfo->fd, proto_sip, pinfo->curr_layer_num, sip_frame_result); } sip_frame_result->response_request_frame_num = result; @@ -3919,8 +3924,6 @@ guint sip_find_request(packet_info *pinfo, (nseconds_between_packets / 1000000); *response_time = sip_frame_result->response_time; - p_add_proto_data(pinfo->fd, proto_sip, 0, sip_frame_result); - return result; } @@ -4021,11 +4024,12 @@ guint sip_find_invite(packet_info *pinfo, result = p_val->frame_number; /* Store return value with this packet */ - sip_frame_result = (sip_frame_result_value *)p_get_proto_data(pinfo->fd, proto_sip, 0); + sip_frame_result = (sip_frame_result_value *)p_get_proto_data(pinfo->fd, proto_sip, pinfo->curr_layer_num); if (sip_frame_result == NULL) { /* Allocate and set all values to zero */ sip_frame_result = se_new0(sip_frame_result_value); + p_add_proto_data(pinfo->fd, proto_sip, 0, sip_frame_result); } sip_frame_result->response_request_frame_num = result; @@ -4039,7 +4043,6 @@ guint sip_find_invite(packet_info *pinfo, (nseconds_between_packets / 1000000); *response_time = sip_frame_result->response_time; - p_add_proto_data(pinfo->fd, proto_sip, 0, sip_frame_result); return result; } |