diff options
Diffstat (limited to 'epan/dissectors/packet-rtpproxy.c')
-rw-r--r-- | epan/dissectors/packet-rtpproxy.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/epan/dissectors/packet-rtpproxy.c b/epan/dissectors/packet-rtpproxy.c index 5c6102e841..632cd1bb7b 100644 --- a/epan/dissectors/packet-rtpproxy.c +++ b/epan/dissectors/packet-rtpproxy.c @@ -801,7 +801,20 @@ dissect_rtpproxy(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data /* Extract IP */ memset(&addr, 0, sizeof(address)); - tmp = tvb_find_line_end(tvb, offset, -1, &new_offset, FALSE); + + /* Try rtpengine bogus extension first. It appends 4 or + * 6 depending on type of the IP. See + * https://github.com/sipwise/rtpengine/blob/master/daemon/call_interfaces.c#L66 + * for further details */ + tmp = tvb_find_guint8(tvb, offset, -1, ' '); + if(tmp == -1){ + /* No extension - operate normally */ + tmp = tvb_find_line_end(tvb, offset, -1, &new_offset, FALSE); + } + else { + tmp -= offset; + } + if (tvb_find_guint8(tvb, offset, -1, ':') == -1){ if (str_to_ip((char*)tvb_get_string(wmem_packet_scope(), tvb, offset, tmp), ipaddr)){ addr.type = AT_IPv4; |