[asterisk-dev] Adding Required header to OK response will fail.
Mark Michelson
mmichelson at digium.com
Thu Nov 13 13:39:21 CST 2014
On 11/13/2014 12:34 PM, Dave WOOLLEY wrote:
>
> I don’t believe that the code that adds Required: timers to a 200 OK
> response will work, even in Asterisk 13, current branch version.
>
> In my back port, it produces an error saying headers cannot be added
> after lines have been added. The same conditions for this seem to
> apply in version 13:
>
> In add_header:
>
> if (req->lines) {
>
> ast_log(LOG_WARNING, "Can't add more headers when lines have been
> added\n");
>
> return -1;
>
> }
>
> In transmit_response_with_sdp:
>
> if (p->rtp) {
>
> ...
>
> if (p->t38.state == T38_ENABLED) {
>
> add_sdp(&resp, p, oldsdp, TRUE, TRUE);
>
> } else {
>
> add_sdp(&resp, p, oldsdp, TRUE, FALSE);
>
> }
>
> } else
>
> ast_log(LOG_ERROR, "Can't add SDP to response, since we have no RTP
> session allocated. Call-ID %s\n", p->callid);
>
> if (reliable && !p->pendinginvite)
>
> p->pendinginvite = seqno; /* Buggy clients sends ACK on
> RINGING too */
>
> add_required_respheader(&resp);
>
> Note that SDP is added, and therefore “req->lines” becomes non-zero,
> as the response now has a body, before add_required_respheader is called.
>
> In add_required_respheader:
>
> if (ast_str_strlen(str) > 0) {
> add_header(req, "Require", ast_str_buffer(str));
> }
>
> For information, the test setup for this was two Asterisk instances in
> tandem. The first one uses session-timers=originate. The second one
> uses sendrpid=true, session-timers=accept and session-refresher=uas.
> The dialplan (after a delay) sets the connected line, to force a
> re-invite against the call setup direction (then goes into a long
> wait). As the first Asterisk is UAS for the re-invite, but is in
> session timer originate mode, it is forced to use Require. The test
> was trying to confirm that session timer role reversals worked.
>
>
> BTS Holdings PLC - Registered office: BTS House, Manor Road,
> Wallington, SM6 0DD - Registered in England: 1517630
>
>
Agreed that this looks like a bug. Probably should be doing the
add_required_respheader() call before adding the SDP.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20141113/5e6d1a7a/attachment-0001.html>
More information about the asterisk-dev
mailing list