OK, I believe this has turned into a bug in the stack. I've noticed
some more details:

- When I send a 183 response with nua_respond() containing
SIPTAG_RSEQ() or SIPTAG_RSEQ_STR() the stack disregards my RSeq and
uses its own, and PRACK is treated correctly;
- When I send a 180 response in exactly the same way the stack uses my
supplied RSeq in the response, but when a PRACK is received with a
RAck header containing the number I supplied in the response RSeq,
sofia responds to the PRACK with '481 No Such Response'. I believe the
RSeq value internally stored with the leg information is not updated
when RSeq is supplied.

Is there a reason 183 and 180 are treated differently in this situation?
Thanks.

On Tue, Jun 17, 2008 at 4:47 PM, Fabio Margarido
<[EMAIL PROTECTED]> wrote:
> Sorry to double post, but I've given this some more reading, and now
> I'm a bit afraid of the answer I'm likely to get to my original
> question. I've found this in the documentation for nta:
>
> "The nta takes care of assigning a serial number to each reliable
> response and resending them if no PRACK request is received"
>
> And this in the documentation for nua_handle():
>
> "Note that certain SIP headers cannot be saved with the handle. They
> include Content-Length, CSeq, RSeq, RAck, and Timestamp."
>
> Does this mean there is no way to change the RSeq header in outgoing
> reliable 18X responses without modifying the stack's code in (or so I
> believe) the lines below:
>
>      if (irq->irq_must_100rel ||
>          (sip->sip_supported &&
>           sip_has_feature(sip->sip_supported, "100rel"))) {
>        irq->irq_rseq = su_randint(1, 0x7fffffff); /* Initialize rseq */
>      }
>
> ?
>
> On a side note, from what I've observed the number generated by this
> su_randint() call doesn't seem very random. I've noticed it is always
> around 10 digits long. Is that expected?
> Thanks.
>
> On Tue, Jun 17, 2008 at 2:13 PM, Fabio Margarido
> <[EMAIL PROTECTED]> wrote:
>> Hi there,
>>
>> I'm trying to set a manually generated RSeq header with
>> SIPTAG_RSEQ_STR() in nua_respond(), but 100rel 18X messages go out
>> with a stack generated RSeq anyway. PRACK is not among my
>> NUTAG_APPL_METHOD()s in this case. Is there something I'm missing or
>> is this behavior expected?
>>
>

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
Sofia-sip-devel mailing list
Sofia-sip-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sofia-sip-devel

Reply via email to