[OpenSIPS-Devel] [ opensips-Bugs-3071925 ] No reply for asyncron MI requests through mi_datagram

SourceForge.net noreply at sourceforge.net
Wed Sep 22 12:15:53 CEST 2010

Bugs item #3071925, was opened at 2010-09-20 16:50
Message generated for change (Comment added) made by bogdan_iancu
You can respond by visiting: 

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: modules
Group: 1.6.x
Status: Open
Resolution: Accepted
Priority: 5
Private: No
Submitted By: Vallimamod Abdullah (vabdulla)
Assigned to: Bogdan-Andrei Iancu (bogdan_iancu)
Summary: No reply for asyncron MI requests through mi_datagram

Initial Comment:
When using the mi_datagram module with udp, I get no reply when sending ':pua_publish:' or ':t_uac_dlg:' requests over MI.  The request however is correctly executed by opensips the MI reply is never sent. I have made a ngrep on the server and on the client, I see nothing except the request. For other requests, I get the correct reply.

Here is how to test with a MESSAGE request with t_uac_dlg (the build_msg.sh script which just generate the request with correct CRLF is attached) :

sh build_msg.sh <dest> <msg> | nc -nu <mi_datagram_server_ip> <mi_datagram_server_port>

What is very strange is that on the logs, I see the answer as sent:

[2010-09-20 15:44:30] debug - /usr/sbin/opensips[21390]: DBG:mi_datagram:datagram_close_async: the response: 200 OK 200 OK . [stripped msg body]     has been sent in 630 octets

But, as a ngrep capture shows, there is actually nothing on the wire...


>Comment By: Bogdan-Andrei Iancu (bogdan_iancu)
Date: 2010-09-22 13:15

Hi Vallimamod,

apply also the second patch I uploaded - it seams that the opensips
processes were forked before MI was init, so the MI_UDP sockets were not

Let me know if this new patch completes the fix.



Comment By: Vallimamod Abdullah (vabdulla)
Date: 2010-09-21 15:32

Hi Bogdan,

Thank you for your reply. I have applied the patch but it doesn't solve
the problem unfortunately.

I have added debug statements on datagram_close_async() func :  when
mi_send_dgram() is called, the dest address corresponds to the client
address and the socket fd corresponds to the initial rx_sock of the MI
server. Moreover, mi_send_dgram() reports the correct number of bytes sent
in datagram_fnc.c:362

I have noticed that datagram_close_async() is called by a process other
than the one who called build_async_handler() : 
- datagram_close_async() is called by Process Type=SIP receiver
- build_async_handler() is called by Process Type=MI Datagram

Is it possible that the socket fd is not valid for the the process calling
the handler ?

Thank you,
- Vallimamod


Comment By: Bogdan-Andrei Iancu (bogdan_iancu)
Date: 2010-09-21 13:42

Hi Vallimamod,

could you please test the attached fix.

Thanks  and regards,


You can respond by visiting: 

More information about the Devel mailing list