linphone-developers
[Top][All Lists]
Advanced

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

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


From: Bryant Bunderson
Subject: [Linphone-developers] Fix for Inbound calls terminated at 30 seconds
Date: Tue, 12 Aug 2014 22:52:41 +0000

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 }

reply via email to

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