[OpenSIPS-Devel] CANCELs and negative ACKs are constructed from the outgoing INVITE ?

Noman Siddiqui nomansi at hotmail.com
Mon Oct 6 15:34:45 CEST 2008


Hi All,

Does anyone know if the support for reparse_invite tm configuration and 
tm_relay_cancel is present in openSER-1.3.1 or later releases.

I found the related patch SER-212 
(http://lists.iptel.org/pipermail/serdev/2007-May/010212.html) to fix the 
issue with CANCEL and negative ACK being built using the incoming INVITE 
instead of outgoing INVITE. However, I searched through the 1.3.1 openSER 
codebase and couldn't find this or similar feature. If its covered through 
some other feature then kindly provide more details. If its not already 
there then is there any enhancement request already in place to cover this 
or does it require new feature request to be opened ?

Here is the pacth detail of SER-212:
http://lists.iptel.org/pipermail/serdev/2007-May/010212.html
===================
  SER CVS Repository

  Modified files:
    modules/tm           t_cancel.c t_fwd.c t_fwd.h t_msgbuilder.c
                         t_msgbuilder.h t_reply.c tm.c
  Added files:
    modules/tm           lw_parser.c lw_parser.h
  Log:
  CANCELs and negative ACKs are constructed from the INVITE which was sent 
out
  instead of building them from the received one. The disadvantage is
  that the outgoing INVITE has to be partially reparsed, the advantage is 
that
  the CANCEL/ACK is always RFC-compliant, it always contains the same 
route-set
  as the INVITE message. (closes SER-212)

  build_local_reparse() function can be used to construct a CANCEL or ACK, 
it
  reparses the outgoing INVITE and applies the modifications specified by 
the RFC.

  new module parameters:
   - reparse_invite: set it to 0 in order to revert to the old behaviour)
   - ac_extra_hdrs: prefix for additional headers which are kept by 
build_local_reparse()

  new script function:
   - t_relay_cancel() - can be used to catch CANCEL requests at the 
beginning of the script
                        and bypass the rest of the script processing:

  if (!t_relay_cancel()) {  # implicit drop if relaying was successful,
                            # nothing to do

          # corresponding INVITE transaction found but error occurred
          sl_reply("500", "Internal Server Error");
          drop;
  }
  # bad luck, corresponding INVITE transaction is missing,
  # do the same as for INVITEs
  ...

  Revision  Changes    Path
  1.1       +258 -0    sip_router/modules/tm/lw_parser.c (new)
http://cvs.berlios.de/cgi-bin/viewcvs.cgi/ser/sip_router/modules/tm/lw_parser.c?rev=1.1&content-type=text/plain
  1.1       +46 -0     sip_router/modules/tm/lw_parser.h (new)
http://cvs.berlios.de/cgi-bin/viewcvs.cgi/ser/sip_router/modules/tm/lw_parser.h?rev=1.1&content-type=text/plain
  1.23      +12 -3     sip_router/modules/tm/t_cancel.c
http://cvs.berlios.de/cgi-bin/viewcvs.cgi/ser/sip_router/modules/tm/t_cancel.c.diff?r1=1.22&r2=1.23
  1.87      +64 -2     sip_router/modules/tm/t_fwd.c
http://cvs.berlios.de/cgi-bin/viewcvs.cgi/ser/sip_router/modules/tm/t_fwd.c.diff?r1=1.86&r2=1.87
  1.15      +2 -1      sip_router/modules/tm/t_fwd.h
http://cvs.berlios.de/cgi-bin/viewcvs.cgi/ser/sip_router/modules/tm/t_fwd.h.diff?r1=1.14&r2=1.15
  1.46      +161 -1    sip_router/modules/tm/t_msgbuilder.c
http://cvs.berlios.de/cgi-bin/viewcvs.cgi/ser/sip_router/modules/tm/t_msgbuilder.c.diff?r1=1.45&r2=1.46
  1.18      +7 -1      sip_router/modules/tm/t_msgbuilder.h
http://cvs.berlios.de/cgi-bin/viewcvs.cgi/ser/sip_router/modules/tm/t_msgbuilder.h.diff?r1=1.17&r2=1.18
  1.140     +14 -3     sip_router/modules/tm/t_reply.c
http://cvs.berlios.de/cgi-bin/viewcvs.cgi/ser/sip_router/modules/tm/t_reply.c.diff?r1=1.139&r2=1.140
  1.153     +23 -1     sip_router/modules/tm/tm.c
http://cvs.berlios.de/cgi-bin/viewcvs.cgi/ser/sip_router/modules/tm/tm.c.diff?r1=1.152&r2=1.153
=============================

Thanks and appreciate your help.





More information about the Devel mailing list