[sr-dev] [kamailio/kamailio] set_body_multipart (from textops module) doesn't insert a proper closing boundary delimiter (#661)

Kamil Shakirov notifications at github.com
Tue Jun 7 11:47:24 CEST 2016


Hello,

If I understand correctly to insert some additional ISUP(SIP-T) data after SDP into INVITE SIP message the first step would be to convert a single body of this SIP message to a multipart body with `set_body_multipart` (from `textops` module) without any parameters (according to https://www.kamailio.org/docs/modules/stable/modules/textops.html#textops.f.set_body_multipart) and then it would convert this message to a multipart one.  Then use `append_body_part` from the same module to insert ISUP data.  However when we tested the first step `set_body_multipart` didn't insert a proper closing boundary delimiter (ending with two more hyphens) as it's supposed to according its documentation: _The core will take care of the last boundary ending "--". Detecting which one is the last and fixing the others if needed._

We tested with the latest release 4.4.1:

kamailio.cfg:
```
route {
        # CANCEL processing                                                                                                                                                       
        if (is_method("CANCEL"))
        {
                if (t_check_trans())
                        t_relay();
                exit;
        }

        # account only INVITEs                                                                                                                                                    
        if (is_method("INVITE"))
        {
                setflag(1); # do accounting   

                if(!ds_is_from_list("1")){
                    ## handle INBOUND ISUP                                                                                                                                        
                    route(ISUP);
                } else {
                    xlog("SIP message from $ru\n");
                    ## handle OUTBOUND ISUP                                                                                                                                       
                    route(TO_PSTN);
                }
        }

        if ($rU==$null)
        {
                # request with no Username in RURI                                                                                                                                
                sl_send_reply("484","Address Incomplete");
                exit;
        }

        # dispatch destinations                                                                                                                                                   
        route(DISPATCH);
}

route[TO_PSTN] {
    set_body_multipart(); # supposed to do the right thing
    msg_apply_changes(); # tested with and without this call, still the same result
}
```

Malformed INVITE SIP message (from Wireshark):
```
INVITE sip:1000 at 192.168.38.88:5080 SIP/2.0
Record-Route: <sip:192.168.38.88:5080;lr=on;callgenie=true>
Via: SIP/2.0/UDP 192.168.38.88:5080;branch=z9hG4bK61df.358abca8ab3f0186f30b081e906e09d0.0
Via: SIP/2.0/UDP 192.168.38.88:5060;branch=z9hG4bK0fdf4145
Max-Forwards: 69
From: "Anonymous" <sip:anonymous at anonymous.invalid>;tag=as6510bcf9
To: <sip:1000 at 192.168.38.88:5080>
Contact: <sip:anonymous at 192.168.38.88:5060>
Call-ID: 4ad0a0133cdbea9c6a05677715d4bd21 at 192.168.38.88:5060
CSeq: 102 INVITE
User-Agent: Asterisk PBX 13.6.0
Date: Tue, 07 Jun 2016 08:38:02 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE
Supported: replaces, timer
X-ISUP-ANI: 081101213
Content-Length: 435
Content-Type: multipart/mixed;boundary="unique-boundary-1"
Mime-Version: 1.0

--unique-boundary-1
Content-Type: application/sdp

v=0
o=root 957277759 957277759 IN IP4 192.168.38.88
s=Asterisk PBX 13.6.0
c=IN IP4 192.168.38.88
b=CT:384
t=0 0
m=audio 11424 RTP/AVP 0 8 3 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:3 GSM/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=maxptime:150
a=sendrecv
m=video 13788 RTP/AVP 34
a=rtpmap:34 H263/90000
a=sendrecv

--unique-boundary-1
SIP/2.0 100 Trying
Via: SIP/2.0/UDP 192.168.38.88:5080;branch=z9hG4bK61df.358abca8ab3f0186f30b081e906e09d0.0
Via: SIP/2.0/UDP 192.168.38.88:5060;branch=z9hG4bK0fdf4145
To: <sip:1000 at 192.168.38.88:5080>
From: "Anonymous" <sip:anonymous at anonymous.invalid>;tag=as6510bcf9
Call-ID: 4ad0a0133cdbea9c6a05677715d4bd21 at 192.168.38.88:5060
CSeq: 102 INVITE
Content-Length: 0

<skipped>
```

Thanks.


---
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/661
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-dev/attachments/20160607/0aaa9f48/attachment.html>


More information about the sr-dev mailing list