[SR-Users] Patch to support symmetric UDP socket in mi_datagram

Muhammad Shahzad shaheryarkh at gmail.com
Sat Mar 29 03:53:14 CET 2014


humm,

When datagram server is initialized in method "mi_init_datagram_server", it
set tx_sock equal to rx_sock, instead of creating a new reply socket. So
that when an async command is received in method "mi_datagram_server" with
tx_sock reference, i pass it to "build_async_handler" method which is then
stored to a newly added parameter to "my_address_socket" structure (see the
last 5 lines of this method). This same structure is passed and used to
send reply in "datagram_close_async" method, so i just used the existing
socket reference stored in structure to send the reply, instead of creating
new one.

So basically original socket reference is preserved for reply, instead of
creating new. Shouldn't this work for async process or i am missing
something here?

Thank you.




On Fri, Mar 28, 2014 at 11:28 PM, Daniel-Constantin Mierla <
miconda at gmail.com> wrote:

>  Have you tested with async mi commands? The function
> build_async_handler() is cloning the information in shared memory,
> expecting that the response to the mi command to be done from another
> process. In that case, the socket is no longer valid, because it was
> created only in the mi process.
>
> I haven't analyzed deeply, but it is very likely to be what I said above.
>
> Options coming in my mind:
>
> - for async case keep the old way of creating a new socket. This can be
> propagated by setting field tx_sock=0
> - try to bind to same socket in async handler, provided the initial socket
> is created with resuse addr/port
>
> Cheers,
> Daniel
>
>
> On 28/03/14 21:49, Muhammad Shahzad wrote:
>
> Please find attached updated patch as requested.
>
>
> On Fri, Mar 28, 2014 at 8:49 PM, Daniel-Constantin Mierla <
> miconda at gmail.com> wrote:
>
>> Thanks for the patch. Can you resend it without commented code? Just
>> remove the lines that are no longer used, to have clean code.
>>
>> Cheers,
>> Daniel
>>
>>
>> On 28/03/14 01:29, Muhammad Shahzad wrote:
>>
>>> Hi,
>>>
>>> After wasting most of the day trying to make mi_datagram over UDP socket
>>> work. I eventually realize that it does asymmetric UDP communication, which
>>> creates a lot of trouble for writing a useful MI script using PERL or
>>> Python etc.
>>>
>>> Anyhow, i go through the module code and was able to write a patch for
>>> symmetric UDP communication using mi_datagram.
>>>
>>> I have tested the patch using both Kamailio 4.1 and trunk branches and
>>> it seems to compile and run flawlessly.
>>>
>>> I am attaching here with this patch for Kamailio community. It would be
>>> great if Kamailio developers would review and commit this patch to source
>>> trunk.
>>>
>>> Thank you.
>>>
>>>
>>>
>>   --
>> Daniel-Constantin Mierla - http://www.asipto.com
>> http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
>> Kamailio World Conference - April 2-4, 2014, Berlin, Germany
>> http://www.kamailioworld.com
>>
>>
>
> --
> Daniel-Constantin Mierla - http://www.asipto.comhttp://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
> Kamailio World Conference - April 2-4, 2014, Berlin, Germanyhttp://www.kamailioworld.com
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20140329/a4c47bda/attachment.html>


More information about the sr-users mailing list