[SR-Users] CallControl and MediaProxy

Reda Aouad reda.aouad at gmail.com
Wed Feb 29 10:19:38 CET 2012


Daniel, It works with flag 28.
Can you confirm that flag 28 isn't used by another module?
If so, can you patch it? When is the next release scheduled for?

The following are the changes I made:

modules_k/call_control.c: flag changed to 28
-------------------------------------------
#define FL_USE_CALL_CONTROL       (1<<28) // use call control for a dialog

parser/msg_parser.h: warning added
-------------------------------------------
/* WARNING: Value (1 << 28) is temporarily reserved for use in kamailio
call_control
 * module (flag  FL_USE_CALL_CONTROL )! */


Thank you :)
Reda



On Wed, Feb 29, 2012 at 09:58, Reda Aouad <reda.aouad at gmail.com> wrote:

> A quick grep on flags FL_* in the sources shows the following :
> Flag 29 is used by acc module, 31 by nat_traversal, 0 to 12 in the parser.
> Thus I assume that it is safe to test using flag 28.
> I'll keep you posted on the test result.
>
> You'll also find below warnings in msg_parser.h for the used flags. Since
> flag 30 is declared for mediaproxy in msg_parser.h, I'll change the flag of
> callcontrol to 28.
>
> -----------------------------------------------------------------
> /* WARNING: Value (1 << 29) is temporarily reserved for use in kamailio acc
>  * module (flag FL_REQ_UPSTREAM)! */
>
> /* WARNING: Value (1 << 30) is temporarily reserved for use in kamailio
>  * media proxy module (flag FL_USE_MEDIA_PROXY)! */
>
> /* WARNING: Value (1 << 31) is temporarily reserved for use in kamailio
>  * nat_traversal module (flag FL_DO_KEEPALIVE)! */
> -----------------------------------------------------------------
>
> $ grep -R  'define FL.* (1' src/kamailio/kamailio-3.2.0
>
> modules_k/call_control/call_control.c:#define FL_USE_CALL_CONTROL
> (1<<30) // use call control for a dialog
> modules_k/nat_traversal/nat_traversal.c:#define FL_DO_KEEPALIVE (1<<31)
> modules_k/acc/acc.h:#define FL_REQ_UPSTREAM (1<<29)
> parser/msg_parser.h:#define FL_FORCE_RPORT  (1 << 0)  /*!< force rport */
> parser/msg_parser.h:#define FL_FORCE_ACTIVE (1 << 1)  /*!< force active
> SDP */
> parser/msg_parser.h:#define FL_SDP_IP_AFS   (1 << 2)  /*!< SDP IP
> rewritten */
> parser/msg_parser.h:#define FL_SDP_PORT_AFS (1 << 3)  /*!< SDP port
> rewritten */
> parser/msg_parser.h:#define FL_SHM_CLONE    (1 << 4)  /*!< msg cloned in
> SHM as a single chunk */
> parser/msg_parser.h:#define FL_TIMEOUT      (1 << 5)  /*!< message belongs
> to an "expired" branch
> parser/msg_parser.h:#define FL_REPLIED      (1 << 6)  /*!< message branch
> received at least one reply
> parser/msg_parser.h:#define FL_HASH_INDEX   (1 << 7)  /*!< msg->hash_index
> contains a valid value (tm use)*/
> parser/msg_parser.h:#define FL_MTU_TCP_FB   (1 << 8)
> parser/msg_parser.h:#define FL_MTU_TLS_FB   (1 << 9)
> parser/msg_parser.h:#define FL_MTU_SCTP_FB  (1 << 10)
> parser/msg_parser.h:#define FL_ADD_LOCAL_RPORT  (1 << 11) /*!< add 'rport'
> to local via hdr */
> parser/msg_parser.h:#define FL_SDP_BODY     (1 << 12)  /*!< msg has SDP in
> body */
> modules/mediaproxy/mediaproxy.c:#define FL_USE_MEDIA_PROXY (1<<30)
>
> -----------------------------------------------------------------
>
>
> Reda
>
>
>
> On Wed, Feb 29, 2012 at 00:18, Daniel-Constantin Mierla <miconda at gmail.com
> > wrote:
>
>>  That should be. Try changing one of them to (1<<29) and see if all works
>> fine.
>>
>> On another hand, defining and using core msg flags in a module is a risk,
>> a different solution has to be done, a simple one is to move the definition
>> of these flags in the core, so there will be no overlap in the future.
>>
>> Cheers,
>> Daniel
>>
>>
>> On 2/27/12 9:32 PM, Reda Aouad wrote:
>>
>>  I looked into mediaproxy.c and found the following :
>>
>>  -------------------------------------------------------
>> #define FL_USE_MEDIA_PROXY (1<<30)
>>
>>  ...
>>
>>  # dialog callback
>>
>>  __dialog_created (...) {
>>         ....
>>          if ((request->msg_flags & FL_USE_MEDIA_PROXY) == 0)
>>                 return;
>>          ....
>>         use_media_proxy (...);
>> }
>>  -------------------------------------------------------
>>
>>
>>  I also found this in call_control.c
>> -------------------------------------------------------
>> #define FL_USE_CALL_CONTROL       (1<<30)
>>
>>  # Public API
>> CallControl (...) {
>>         ...
>>         msg->msg_flags |= FL_USE_CALL_CONTROL;
>>         ...
>> }
>> -------------------------------------------------------
>>
>>  So I suspect that since the call_control module uses the same flag as
>> the mediaproxy module, call_control function is used, flag 30 is set, and
>> the following condition in the __dialog_created callback function above is
>> never met
>>
>>          (request->msg_flags & FL_USE_MEDIA_PROXY) == 0
>>
>>  so the callback function continues until executing its last line :
>> use_media_proxy (...)
>> which is called on every call to call_control ( ) function..
>>
>>   Reda
>>
>>
>>
>> On Mon, Feb 27, 2012 at 18:39, Reda Aouad <reda.aouad at gmail.com> wrote:
>>
>>>  Ok thanks Daniel.
>>>
>>>  I'll do what you suggested and we'll see how to proceed.
>>>
>>>  Thanks again
>>> Reda
>>>
>>
>>
>> --
>> Daniel-Constantin Mierla -- http://www.asipto.comhttp://linkedin.com/in/miconda -- http://twitter.com/miconda
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20120229/1d43567b/attachment.htm>


More information about the sr-users mailing list