E.H.Eefting wrote:
After a lot of debugging with asterisk and sipp in pcap mode we found the following problem:

If asterisk is configured to allow rtp ports greater than 9999, it seems the last digit is trimmed away some how.
An example of a tcpdump followed by an immediate netstat shows this problem:
- is running sipp in uac_pcap mode.
- is the asterisk server.
-uac is sending packets to udp port 1830
-asterisk is listening on ports 18300 and 18301

If asterisk happens to choose a port below 10000 (a port that is 4 digits long), everything goes well. This looks like a SIP parser bug in sipp somewhere, since normally we dont have this problem with other sip clients.
The SIP protocol is text-based, so a parser bug makes sence, right?

Could somebody look into the sourcecode if this is right? If it IS a bug, it would certainly explain a lot for many people i think ;)

Edwin Eefting

-----------------------------------------(paste of terminal output)
[Syn-3] r...@darkstar.example.net /etc/asterisk# tcpdump -n -l src and not port 22 or proto ICMP | head -20 ; netstat -nap| grep asterisk
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0:0, link-type EN10MB (Ethernet), capture size 68 bytes
17:57:49.398169 IP > UDP, length 252
17:57:49.428113 IP > UDP, length 252
17:57:49.458880 IP > UDP, length 252
17:57:49.458939 IP > ICMP udp port 1830 unreachable, length 288
17:57:49.488563 IP > UDP, length 252
17:57:49.517853 IP > UDP, length 252
21 packets captured
48 packets received by filter
0 packets dropped by kernel
udp 0 0* 18189/asterisk udp 0 0* 18189/asterisk udp 0 0* 18189/asterisk udp 0 0* 18189/asterisk

Hi, Edwin

Yes, this is a bug in sipp. Here is your patch.

BR, Dmitry
diff -urb sipp.svn_orig/call.cpp sipp.svn_fixed/call.cpp
--- sipp.svn_orig/call.cpp      2008-12-19 13:14:51.000000000 +0300
+++ sipp.svn_fixed/call.cpp     2008-12-19 13:16:34.000000000 +0300
@@ -192,7 +192,7 @@
       /* m=audio not found */
       return 0;
-    begin += strlen(pattern) - 1;
+    begin += strlen(pattern);
     end = strstr(begin, "\r\n");
     if (!end)
       ERROR("get_remote_port_media: no CRLF found");
Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
easily build your RIAs with Flex Builder, the Eclipse(TM)based development
software that enables intelligent coding and step-through debugging.
Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
Sipp-users mailing list

Reply via email to