Skip to content

Commit 1c42d41

Browse files
Fix #100 Event Accept_incoming_call_completed should be sent after 183 (early media call)
1 parent 5a26611 commit 1c42d41

File tree

1 file changed

+127
-0
lines changed

1 file changed

+127
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
diff '--exclude=*.xml' '--exclude=*.o.d' '--exclude=.project' '--exclude=.cproject' -Naur asterisk-base-11.3.0/apps/wms_inoapi.c asterisk-11.3.0/apps/wms_inoapi.c
2+
--- asterisk-base-11.3.0/apps/wms_inoapi.c 2024-01-15 17:10:59.080000000 +0000
3+
+++ asterisk-11.3.0/apps/wms_inoapi.c 2024-01-16 09:50:17.696186800 +0000
4+
@@ -9,7 +9,7 @@
5+
* $History: $
6+
*
7+
* Luis Reis
8+
- * Copyright (c) 2006 PT Inovação SA. All Rights Reserved
9+
+ * Copyright (c) 2006 PT Inova��o SA. All Rights Reserved
10+
******************************************************************************/
11+
12+
/*******************************************************************************
13+
@@ -124,6 +124,9 @@
14+
15+
ast_log(LOG_DEBUG, "InoAPI says Charge %d\n", trs_cmd.al_int_val2);
16+
17+
+ chan_vars->trs_reply.con_id = trs_cmd.con_id;
18+
+ chan_vars->trs_reply.sender = trs_cmd.edp_id;
19+
+
20+
if (trs_cmd.al_int_val1 == ACCEPT)
21+
{
22+
if (option_verbose >= 3)
23+
@@ -131,7 +134,12 @@
24+
ast_indicate(chan, AST_CONTROL_PROGRESS);
25+
chan_vars->early_media = ast_tvnow();
26+
27+
- ast_set_flag(ast_channel_icall_flags(chan), ICALL_WAIT_PRACK);
28+
+ // Fix WMS-2317 - In calls with early media,
29+
+ // the response to WMS service must not wait for PRACK
30+
+ //ast_set_flag(ast_channel_icall_flags(chan), ICALL_WAIT_PRACK);
31+
+
32+
+ asteriskSendReply(&trs_reply, chan_vars);
33+
+ return;
34+
}
35+
else
36+
{
37+
@@ -147,8 +155,6 @@
38+
39+
ast_set_flag(ast_channel_icall_flags(chan), ICALL_WAIT_ACK);
40+
}
41+
- chan_vars->trs_reply.con_id = trs_cmd.con_id;
42+
- chan_vars->trs_reply.sender = trs_cmd.edp_id;
43+
44+
if (ast_pthread_create_background(&chan_vars->icall_thread, NULL, accept_icall_thread, chan_vars) < 0)
45+
{
46+
@@ -212,19 +218,23 @@
47+
asteriskSendReply(&trs_reply, chan_vars);
48+
49+
break;
50+
- }else if(ast_test_flag(ast_channel_icall_flags(chan_vars->chan), ICALL_WAIT_PRACK) &&
51+
- ast_test_flag(ast_channel_icall_flags(chan_vars->chan), ICALL_RCV_PRACK)){
52+
+ }
53+
+ // Fix WMS-2317 - In calls with early media,
54+
+ // the response to WMS service must not wait for PRACK
55+
56+
- ast_log(LOG_DEBUG, "accept_icall_thread - We receive PRACK - ast state [%d]\n", ast_channel_state(chan_vars->chan));
57+
- ast_clear_flag(ast_channel_icall_flags(chan_vars->chan), ICALL_WAIT_PRACK);
58+
- ast_clear_flag(ast_channel_icall_flags(chan_vars->chan), ICALL_RCV_PRACK);
59+
+ // else if(ast_test_flag(ast_channel_icall_flags(chan_vars->chan), ICALL_WAIT_PRACK) &&
60+
+ // ast_test_flag(ast_channel_icall_flags(chan_vars->chan), ICALL_RCV_PRACK)){
61+
62+
- ast_channel_unlock(chan_vars->chan);
63+
+ // ast_log(LOG_DEBUG, "accept_icall_thread - We receive PRACK - ast state [%d]\n", ast_channel_state(chan_vars->chan));
64+
+ // ast_clear_flag(ast_channel_icall_flags(chan_vars->chan), ICALL_WAIT_PRACK);
65+
+ // ast_clear_flag(ast_channel_icall_flags(chan_vars->chan), ICALL_RCV_PRACK);
66+
67+
- asteriskSendReply(&trs_reply, chan_vars);
68+
+ // ast_channel_unlock(chan_vars->chan);
69+
+
70+
+ // asteriskSendReply(&trs_reply, chan_vars);
71+
72+
- break;
73+
- }
74+
+ // break;
75+
+ // }
76+
77+
ast_channel_unlock(chan_vars->chan);
78+
79+
diff '--exclude=*.xml' '--exclude=*.o.d' '--exclude=.project' '--exclude=.cproject' -Naur asterisk-base-11.3.0/channels/chan_sip.c asterisk-11.3.0/channels/chan_sip.c
80+
--- asterisk-base-11.3.0/channels/chan_sip.c 2024-01-15 17:10:58.950000000 +0000
81+
+++ asterisk-11.3.0/channels/chan_sip.c 2024-01-16 09:50:04.486186800 +0000
82+
@@ -30506,12 +30506,15 @@
83+
case SIP_PRACK:
84+
res = handle_request_prack(p, req);
85+
86+
- if(p->owner){
87+
- if(p->invitestate == INV_EARLY_MEDIA){
88+
- ast_log(LOG_DEBUG, "handle_incoming - Set ICALL_RCV_PRACK flag\n");
89+
- ast_set_flag(ast_channel_icall_flags(p->owner), ICALL_RCV_PRACK);
90+
- }
91+
- }
92+
+ // Fix WMS-2317 - In calls with early media,
93+
+ // the response to WMS service must not wait for PRACK,
94+
+ // so we comment code below
95+
+ // if(p->owner){
96+
+ // if(p->invitestate == INV_EARLY_MEDIA){
97+
+ // ast_log(LOG_DEBUG, "handle_incoming - Set ICALL_RCV_PRACK flag\n");
98+
+ // ast_set_flag(ast_channel_icall_flags(p->owner), ICALL_RCV_PRACK);
99+
+ // }
100+
+ // }
101+
break;
102+
case SIP_ACK:
103+
/* Make sure we don't ignore this */
104+
diff '--exclude=*.xml' '--exclude=*.o.d' '--exclude=.project' '--exclude=.cproject' -Naur asterisk-base-11.3.0/include/asterisk/channel.h asterisk-11.3.0/include/asterisk/channel.h
105+
--- asterisk-base-11.3.0/include/asterisk/channel.h 2024-01-15 17:10:58.940000000 +0000
106+
+++ asterisk-11.3.0/include/asterisk/channel.h 2024-01-16 09:49:38.176186800 +0000
107+
@@ -217,9 +217,9 @@
108+
109+
/* Specific flags to support async reply for events ACCEPT_ICALL_COMPLETED and CONNECT_CALL_COMPLETED */
110+
#define ICALL_WAIT_ACK (1 << 1)
111+
-#define ICALL_WAIT_PRACK (1 << 2)
112+
+//#define ICALL_WAIT_PRACK (1 << 2) Fix WMS-2317
113+
#define ICALL_RCV_ACK (1 << 3)
114+
-#define ICALL_RCV_PRACK (1 << 4)
115+
+//#define ICALL_RCV_PRACK (1 << 4) Fix WMS-2317
116+
117+
118+
enum ast_bridge_result {
119+
@@ -479,7 +479,7 @@
120+
* PSTN gateway).
121+
*
122+
* \todo Implement settings for transliteration between UTF8 Caller ID names in
123+
- * to ASCII Caller ID's (DAHDI). Östen Åsklund might be transliterated into
124+
+ * to ASCII Caller ID's (DAHDI). �sten �sklund might be transliterated into
125+
* Osten Asklund or Oesten Aasklund depending upon language and person...
126+
* We need automatic routines for incoming calls and static settings for
127+
* our own accounts.

0 commit comments

Comments
 (0)