[Serusers] WARNING: upstream bug - 0-terminated packet

Jiri Kuthan jiri at iptel.org
Fri Jul 16 00:25:31 CEST 2004


It is what it tells to be -- the received packet is broken in that it includes
a zero character in the end. We honor such request but issue a warning about
them. use "ngrep -x" to inspect the packet in hexcode.

-jiri

At 11:53 PM 7/15/2004, Jev wrote:
>Hi All,
>
>I'm having to work with another SIP UAS acting as a location server, and I have ser as my 'frontend' so all clients talk to ser, and ser will register and with the location server.
>
>In my logs I see the warning:
>Jul 15 14:26:31 frig /usr/local/sbin/ser[18931]: WARNING: upstream bug - 0-terminated packet
>
>This happens when I t_relay my REGISTERS to the 3rd party location server. The packets look fine to me. Any ideas?
>
>Here follows a trace (from ngrep), the logs from syslog, and our ser configuration. I'm aware that the location server is not challenging on REGISTERS :)
>
>Thanks!
>-Jev
>
>U xx.xx.xx.181:64683 -> xx.xx.xx.6:5060
>REGISTER sip:frontendser.example.com SIP/2.0.
>Via: SIP/2.0/UDP 192.168.123.92;branch=z9hG4bK0c95a85aa284e67a.
>From: "Billy Pike" <sip:88890000 at frontendser.example.com>;tag=4c8855e01b806681.
>To: <sip:88890000 at frontendser.example.com>.
>Contact: <sip:88890000 at 192.168.123.92>.
>Call-ID: 0b3754db1b4dd80b at 192.168.123.92.
>CSeq: 100 REGISTER.
>Expires: 3600.
>User-Agent: Grandstream BT100 1.0.4.55.
>Max-Forwards: 70.
>Allow: INVITE,ACK,CANCEL,BYE,NOTIFY,REFER,OPTIONS,INFO,SUBSCRIBE.
>Content-Length: 0.
>.
>
>#
>U xx.xx.xx.6:5060 -> xx.xx.xx.178:5060
>REGISTER sip:location.example.com:5060 SIP/2.0.
>Record-Route: <sip:xx.xx.xx.6;ftag=4c8855e01b806681;lr=on>.
>Via: SIP/2.0/UDP xx.xx.xx.6;branch=z9hG4bK168.c89ec35.0.
>Via: SIP/2.0/UDP 192.168.123.92;rport=64683;received=xx.xx.xx.181;branch=z9hG4bK0c95a85aa284e67a.
>From: "Billy Pike" <sip:88890000 at frontendser.example.com>;tag=4c8855e01b806681.
>To: <sip:88890000 at frontendser.example.com>.
>Contact: <sip:88890000 at xx.xx.xx.181:64683>.
>Call-ID: 0b3754db1b4dd80b at 192.168.123.92.
>CSeq: 100 REGISTER.
>Expires: 3600.
>User-Agent: Grandstream BT100 1.0.4.55.
>Max-Forwards: 69.
>Allow: INVITE,ACK,CANCEL,BYE,NOTIFY,REFER,OPTIONS,INFO,SUBSCRIBE.
>Content-Length: 0.
>P-hint: fixed NAT contact for request.
>.
>
>#####
>U xx.xx.xx.178:5060 -> xx.xx.xx.6:5060
>SIP/2.0 200 OK.
>Record-Route: <sip:xx.xx.xx.6;ftag=4c8855e01b806681;lr=on>.
>Via: SIP/2.0/UDP xx.xx.xx.6;branch=z9hG4bK168.c89ec35.0.
>Via: SIP/2.0/UDP 192.168.123.92;rport=64683;received=xx.xx.xx.181;branch=z9hG4bK0c95a85aa284e67a.
>From: "Billy Pike" <sip:88890000 at frontendser.example.com>;tag=4c8855e01b806681.
>To: <sip:88890000 at frontendser.example.com>.
>Contact: <sip:88890000 at xx.xx.xx.181:64683>.
>Call-ID: 0b3754db1b4dd80b at 192.168.123.92.
>CSeq: 100 REGISTER.
>Expires: 3600.
>User-agent: Grandstream BT100 1.0.4.55.
>Max-Forwards: 68.
>Allow: INVITE,ACK,CANCEL,BYE,NOTIFY,REFER,OPTIONS,INFO,SUBSCRIBE.
>Content-Length: 0.
>P-hint: fixed NAT contact for request.
>.
>.
>##
>U xx.xx.xx.6:5060 -> xx.xx.xx.181:64683
>SIP/2.0 200 OK.
>Record-Route: <sip:xx.xx.xx.6;ftag=4c8855e01b806681;lr=on>.
>Via: SIP/2.0/UDP 192.168.123.92;rport=64683;received=xx.xx.xx.181;branch=z9hG4bK0c95a85aa284e67a.
>From: "Billy Pike" <sip:88890000 at frontendser.example.com>;tag=4c8855e01b806681.
>To: <sip:88890000 at frontendser.example.com>.
>Contact: <sip:88890000 at xx.xx.xx.181:64683>.
>Call-ID: 0b3754db1b4dd80b at 192.168.123.92.
>CSeq: 100 REGISTER.
>Expires: 3600.
>User-agent: Grandstream BT100 1.0.4.55.
>Max-Forwards: 68.
>Allow: INVITE,ACK,CANCEL,BYE,NOTIFY,REFER,OPTIONS,INFO,SUBSCRIBE.
>Content-Length: 0.
>P-hint: fixed NAT contact for request.
>.
>
>
>
>
>
>
>Jul 15 14:26:31 frig /usr/local/sbin/ser[18904]: ----------Entering default route---------------
>Jul 15 14:26:31 frig /usr/local/sbin/ser[18904]: [REGISTER] from [sip:88890000 at frontendser.example.com] to [sip:88890000 at frontendser.example.com]
>Jul 15 14:26:31 frig /usr/local/sbin/ser[18904]: src address different than via header->NAT detected
>Jul 15 14:26:31 frig /usr/local/sbin/ser[18904]: force_rport and fix_nated_contact and setflag(5)
>Jul 15 14:26:31 frig /usr/local/sbin/ser[18904]: rewriting uri for REGISTER request..
>Jul 15 14:26:31 frig /usr/local/sbin/ser[18904]: Called rewritehostport(location.example.com,5060) on REGSITER request..
>Jul 15 14:26:31 frig /usr/local/sbin/ser[18904]: Called t_relay() for register..
>Jul 15 14:26:31 frig /usr/local/sbin/ser[18931]: WARNING: upstream bug - 0-terminated packet
>
>
>
>
>
>
>#
># $Id: ser_rtproxy_fe.cfg,v 1.3 2004/07/06 22:48:35 jev Exp $
>#
># TODO
># Fix xlog statements to use appropriate logging levels.
>#
># ----------- global configuration parameters ------------------------
>
>debug=9         # debug level (cmd line: -dddddddddd)
>fork=yes
>log_stderror=no # (cmd line: -E)
>
>/* Uncomment these lines to enter debugging mode
>debug=9
>fork=no
>log_stderror=yes
>*/
>
>check_via=no    # (cmd. line: -v)
>dns=no           # (cmd. line: -r)
>rev_dns=no      # (cmd. line: -R)
>port=5060
>#children=4
>fifo="/tmp/ser_fifo"
>
>sip_warning=yes
>
># ------------------ module loading ----------------------------------
>
># Uncomment this if you want to use SQL database
>loadmodule "/usr/local/lib/ser/modules/mysql.so"
>
>loadmodule "/usr/local/lib/ser/modules/sl.so"
>loadmodule "/usr/local/lib/ser/modules/tm.so"
>loadmodule "/usr/local/lib/ser/modules/rr.so"
>loadmodule "/usr/local/lib/ser/modules/maxfwd.so"
>loadmodule "/usr/local/lib/ser/modules/usrloc.so"
>loadmodule "/usr/local/lib/ser/modules/registrar.so"
>loadmodule "/usr/local/lib/ser/modules/textops.so"
>loadmodule "/usr/local/lib/ser/modules/domain.so"
>loadmodule "/usr/local/lib/ser/modules/xlog.so"
>loadmodule "/usr/local/lib/ser/modules/nathelper.so"
>
># Uncomment this if you want digest authentication
># mysql.so must be loaded !
>loadmodule "/usr/local/lib/ser/modules/auth.so"
>loadmodule "/usr/local/lib/ser/modules/auth_db.so"
>
># ----------------- setting module-specific parameters ---------------
>
># -- usrloc params --
>
>modparam("usrloc", "db_mode",   0)
>
># Uncomment this if you want to use SQL database
># for persistent storage and comment the previous line
>#modparam("usrloc", "db_mode", 2)
>
># -- auth params --
># Uncomment if you are using auth module
>#
>#modparam("auth_db", "calculate_ha1", yes)
>#
># If you set "calculate_ha1" parameter to yes (which true in this config),
># uncomment also the following parameter)
>#
>#modparam("auth_db", "password_column", "password")
>
># -- rr params --
># add value to ;lr param to make some broken UAs happy
>modparam("rr", "enable_full_lr", 1)
>modparam("rr", "append_fromtag", 1)
>
>modparam("registrar", "nat_flag", 6)
>#modparam("nathelper", "natping_interval", 4) # Ping interval 30 s
>modparam("nathelper", "natping_interval", 5) # Ping interval 30 s
>
># -------------------------  request routing logic -------------------
>
># main routing logic
>
>route{
>
>        log(1, "----------Entering default route---------------\n");
>        xlog("L_ERR", "[%rm] from [%fu] to [%tu]");
>
>        if (nat_uac_test("2")) {
>                log(1, "src address different than via header->NAT detected\n");
>                log(1, "force_rport and fix_nated_contact and setflag(5)\n");
>                #try NAT traversal, works only if the client is symmetrical
>                force_rport();
>                fix_nated_contact();
>                #fix_nated_sdp();
>                append_hf("P-hint: fixed NAT contact for request\r\n");
>                # flag 5 indicates that incoming request is from NATed client
>                setflag(5);
>        };
>        
>
>        # initial sanity checks -- messages with
>        # max_forwards==0, or excessively long requests
>        if (!mf_process_maxfwd_header("10")) {
>                sl_send_reply("483","Too Many Hops");
>                break;
>        };
>        if ( msg:len > max_len ) {
>                sl_send_reply("513", "Message too big");
>                break;
>        };
>
>        # we record-route all messages -- to make sure that
>        # subsequent messages will go through our proxy; that's
>        # particularly good if upstream and downstream entities
>        # use different transport protocol
>        record_route(); 
>        # loose-route processing
>        if (loose_route()) {
>                t_relay();
>                break;
>        };
>
>        # if the request is for other domain use UsrLoc
>        # (in case, it does not work, use the following command
>        # with proper names and addresses in it)
>        if (uri==myself) {
>
>                if (method=="REGISTER") {
>                        log(1,"rewriting uri for REGISTER request..");
>                        rewritehostport("location.example.com:5060");
>                        if(     isflagset(5) ){
>                                force_rtp_proxy();
>                        }
>                        log(1,"Called rewritehostport(location.example.com,5060) on REGSITER request..");
>                        if(t_relay()){
>                                log(1,"Called t_relay() for register..");
>                        }
>#                       if(!sl_send_reply("200", "ok")){
>#                               log(1,"Got error when calling sl_send_reply(200, ok) on REGSITER request..");
>#                       }
>                        t_on_reply("1");
>                        break;
>                };
>
>                if (method=="INVITE" || method == "CANCEL") {
>                        log(1,"rewriting uri for INVITE request..");
>                        rewritehostport("location.example.com:5060");
>                        log(1,"Called rewritehostport(location.example.com,5060) on INVITE request..");
>                        if(isflagset(5)){
>                                force_rtp_proxy();
>                        }
>
>                        route(1);
>#if(t_relay()){
>#                               log(1,"Called t_relay() for register..");
>#                       }
>#                       if(!sl_send_reply("200", "ok")){
>#                               log(1,"Got error when calling sl_send_reply(200, ok) on REGSITER request..");
>#                       }
>                        t_on_reply("1");
>                        break;
>                };
>        };
>
>        route(1);
>}
>route[1]{
>        log(1, "-------------------------------------------\n");
>        log(1, "entering route[1] - relaying SIP message\n");
>        if ((isflagset(5)) || (isflagset(6))) {
>                log(1, "at least one of the participants is NATed->record_route\n");
>                record_route();
>                log(1, "     -->setting up reply processing ->onreply_route[1]");
>                t_on_reply("1");
>                if (method=="INVITE") {
>                        log(1, "INVITE request-->force_rtp_proxy, set NATED-INVITE flag(7)");
>                        force_rtp_proxy();
>                        append_hf("P-hint: request forced to nathelper\r\n");
>                        setflag(7);
>                };
>        };
>
>
>        log(1, "relaying message ...\n");
>        if (!t_relay()) {
>                log(1, "t_relay error occured\n");
>                sl_reply_error();
>        };
>}
>
>route[2]{
>        if ((isflagset(5)) || (isflagset(6))) {
>                log(1, "at least one of the participants is NATed->record_route\n");
>                record_route();
>                log(1, "     -->setting up reply processing ->onreply_route[2]");
>                t_on_reply("1");
>                if (method=="INVITE") {
>                        log(1, "     INVITE request-->force_rtp_proxy, set NATED-INVITE flag(7)");
>                        force_rtp_proxy();
>                        append_hf("P-hint: request forced to nathelper\r\n");
>                        setflag(7);
>                };
>        };
>        xlog("L_ERR", "Forwarding %fu to %tu [Cisco]\n");
>        rewritehostport("xx.xx.xx.8:5060");
>        if(!t_relay()){
>                log(1, "Relay to Cisco failed");
>                break;
>        };
>}
>
>#all incoming replies for t_onrepli-ed transactions enter here
>onreply_route[1] {
>        log(1, "-------------------------------------------\n");
>        log(1, "onreply_route[1] entered\n");
>
>        if (isflagset(5)) {
>                log(1, "transaction was sent to a NATED client -> fix nated contact\n");
>                fix_nated_contact();
>                force_rport();
>                force_rtp_proxy();
>                #fix_nated_sdp();
>                append_hf("P-hint: fixed NAT contact for response (nathelper)\r\n");
>        }
>
>        if ( (status=~"100") ) {
>                log(1, "status 100 received\n");
>        };
>
>        if ( (status=~"180") ) {
>                log(1, "status 180 received\n");
>        };
>
>        if ( (status=~"202") ) {
>                log(1, "status 202 received\n");
>        };
>
>        if ( (status=~"200" || status=~"183") ) {
>                log(1, "status 2xx or 183");
>        if ( isflagset(7) ) {
>                log(1, "marked(7) as NATED-INVITE -> force_rtp_proxy \n");
>                force_rtp_proxy();
>                append_hf("P-hint: response forced to nathelper\r\n");
>                };
>        };
>}
>onreply_route[2] {
>        log(1, "-------------------------------------------\n");
>        xlog("L_ERR", "onreply_route[2] entered From %fu to %tu\n");
>
>        if (isflagset(6)) {
>                log(1, "transaction was sent to a NATED client -> fix nated contact\n");
>                fix_nated_contact();
>                #fix_nated_sdp();
>                append_hf("P-hint: fixed NAT contact for response\r\n");
>        }
>
>        if ( (status=~"100") ) {
>                log(1, "status 100 received\n");
>        };
>
>        if ( (status=~"180") ) {
>                log(1, "status 180 received\n");
>        };
>
>        if ( (status=~"202") ) {
>                log(1, "status 202 received\n");
>        };
>
>        if ( (status=~"200" || status=~"183") ) {
>                log(1, "status 2xx or 183");
>        if ( isflagset(7) ) {
>                log(1, "marked(7) as NATED-INVITE -> force_rtp_proxy \n");
>                force_rtp_proxy();
>                append_hf("P-hint: response forced to nathelper\r\n");
>                };
>        };
>}
>
>_______________________________________________
>Serusers mailing list
>serusers at lists.iptel.org
>http://lists.iptel.org/mailman/listinfo/serusers

--
Jiri Kuthan            http://iptel.org/~jiri/ 




More information about the sr-users mailing list