sipp
sipp copied to clipboard
sipp can not process calls with same call-id but different From tag
Hi. Checked with latest released version - was not able to make 3.7 working on FreeBSD unfortunately.
Current behavior: UAS does not recognize second INVITE with same call-id as previous as new call. UAC crashes to coredump on second call.
RFC3261:
Call-ID contains a globally unique identifier for this call,
generated by the combination of a random string and the softphone's
host name or IP address. The combination of the To tag, From tag,
and Call-ID completely defines a peer-to-peer SIP relationship
between Alice and Bob and is referred to as a dialog.
How to reproduce:
[test@123 /var/tmp/sipp]$ ./sipp -v | head -n2
SIPp v3.6.1-TLS-SCTP-PCAP-RTPSTREAM.
[test@123 /var/tmp/sipp]$ ./sipp -i 10.133.30.2 -p 5060 -sn uas -trace_msg -trace_err
[test@123 /var/tmp/sipp]$ ./sipp 10.133.30.2 -s 123 -i 10.133.30.2 -p 5069 -m 2 -r 1 -cid_str test123 -trace_msg -trace_err
[test@123 /var/tmp/sipp]$ sudo /usr/local/bin/gdb82 /var/tmp/sipp/sipp /var/tmp/sipp.9487.core
GNU gdb (GDB) 8.2 [GDB v8.2 for FreeBSD]
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-portbld-freebsd11.2".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /var/tmp/sipp/sipp...(no debugging symbols found)...done.
[New LWP 101855]
Core was generated by `./sipp 10.133.30.2 -s 123 -i 10.133.30.2 -p 5069 -m 2 -r 1 -cid_str test123 -tra'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x0000000000446885 in std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, listener*>, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, listener*>, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, listener*> > >::erase(std::__1::__tree_const_iterator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, listener*>, std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, listener*>, void*>*, long>) ()
(gdb) bt
#0 0x0000000000446885 in std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, listener*>, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, listener*>, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, listener*> > >::erase(std::__1::__tree_const_iterator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, listener*>, std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, listener*>, void*>*, long>) ()
#1 0x0000000000443126 in listener::stopListening() ()
#2 0x00000000004431f8 in listener::~listener() ()
#3 0x0000000000438ef3 in deadcall::~deadcall() ()
#4 0x0000000000438f49 in deadcall::~deadcall() ()
#5 0x00000000004ac02b in task::abort() ()
#6 0x00000000004aad05 in abort_all_tasks() ()
#7 0x00000000004bc616 in traffic_thread() ()
#8 0x00000000004bb702 in main ()
(gdb) info threads
Id Target Id Frame
* 1 LWP 101855 0x0000000000446885 in std::__1::__tree<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, listener*>, std::__1::__map_value_compare<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, listener*>, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::allocator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, listener*> > >::erase(std::__1::__tree_const_iterator<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, listener*>, std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, listener*>, void*>*, long>) ()
(gdb)
Coredump and logs: sipp.9487.core.gz uac_9487_errors.log uas_9263_errors.log uac_9487_messages.log uas_9263_messages.log