linphone-developers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Linphone-developers] Fix for Inbound calls terminated at 30 seconds


From: Gunnar Hellstrom
Subject: Re: [Linphone-developers] Fix for Inbound calls terminated at 30 seconds
Date: Wed, 13 Aug 2014 06:38:50 +0200
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0

Bryant,
The fact that you do not get the ACK very likely indicates a routing problem in your configuration. The NAT traversal might not be configured properly or something similar.
Your SIP provider very likely sends the ACK, but not to where your device is because the address information the device provided was not modified along the path to something that the SIP provider or the other party in the call can use to find the route back.

If you just ignore this as you propose, you will likely have similar problems with other SIP requests during the call, e.g. the BYE when the remote party hangs up.

Try to verify your routing and NAT traversal, or first put the device in a simpler network configuration, e.g. directly in the open Internet.

Regards
Gunnar


Gunnar Hellström
Omnitor

On 2014-08-13 00:52, Bryant Bunderson wrote:
Inbound phone calls to Linphone-android are being disconnected after 30 seconds. I located the piece of code that was causing it. It's line 9 of the belle-sip/dialoc.c file. When the dialog is established for the call and it's an incoming call (linphone is acting as a server) then linphone requires that an ACK is received from the server before a timeout period of T1*64. If the server doesn't send an ACK then the timer fires and the call is terminated. My SIP provider is not sending the ACK. Is it okay to ignore the missing ACK? I have commented out that line and things seem to work just fine. Thanks for your help.

1 int belle_sip_dialog_establish_full(belle_sip_dialog_t *obj, belle_sip_request_t *req, belle_sip_response_t *resp){
2 belle_sip_header_contact_t *ct=belle_sip_message_get_header_by_type(resp,belle_sip_header_contact_t);
3 belle_sip_header_to_t *to=belle_sip_message_get_header_by_type(resp,belle_sip_header_to_t);
4
5 if (strcmp(belle_sip_request_get_method(req),"INVITE")==0)
6 obj->needs_ack=TRUE;
7
8 if (obj->is_server && strcmp(belle_sip_request_get_method(req),"INVITE")==0){
9 belle_sip_dialog_init_200Ok_retrans(obj,resp);  // <--- Why must the 200OK be ACKed for incoming phone calls?
10 } else if (!obj->is_server ) {
11 if (!ct && !obj->remote_target) {
12 belle_sip_error("Missing contact header in resp [%p] cannot set remote target for dialog [%p]",resp,obj);
13 return -1;
14 }
15 if (ct) {
16 /*remote Contact header may have changed between early dialog to confirmed*/
17 if (obj->remote_target) belle_sip_object_unref(obj->remote_target);
18 obj->remote_target=(belle_sip_header_address_t*)belle_sip_object_ref(ct);
19 }
20 }
21 /*update to tag*/
22 set_to_tag(obj,to);
23 set_state(obj,BELLE_SIP_DIALOG_CONFIRMED);
24 return 0;
25 }


_______________________________________________
Linphone-developers mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/linphone-developers


reply via email to

[Prev in Thread] Current Thread [Next in Thread]