FreeCalypso > hg > themwi-system-sw
comparison sip-in/mncc_handle.c @ 140:01fe81914bd6
sip-in: move MNCC_RTP_CONNECT sending to answer time
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 08 Oct 2022 11:48:26 -0800 |
parents | 5685412bd6aa |
children | e499e8db8b82 |
comparison
equal
deleted
inserted
replaced
139:c731ec342ba0 | 140:01fe81914bd6 |
---|---|
78 msg.callref = call->mncc_callref; | 78 msg.callref = call->mncc_callref; |
79 send_mncc_to_gsm(&msg, sizeof(struct gsm_mncc)); | 79 send_mncc_to_gsm(&msg, sizeof(struct gsm_mncc)); |
80 } | 80 } |
81 | 81 |
82 static void | 82 static void |
83 send_rtp_connect(call) | |
84 struct call *call; | |
85 { | |
86 struct gsm_mncc_rtp rtp; | |
87 | |
88 bzero(&rtp, sizeof(struct gsm_mncc_rtp)); | |
89 rtp.msg_type = MNCC_RTP_CONNECT; | |
90 rtp.callref = call->mncc_callref; | |
91 bcopy(&call->gsm_rtp_tmgw, &rtp.addr, sizeof(struct sockaddr_storage)); | |
92 send_mncc_to_gsm(&rtp, sizeof(struct gsm_mncc_rtp)); | |
93 } | |
94 | |
95 static void | |
83 handle_alerting(call, msg) | 96 handle_alerting(call, msg) |
84 struct call *call; | 97 struct call *call; |
85 struct gsm_mncc *msg; | 98 struct gsm_mncc *msg; |
86 { | 99 { |
87 if (call->mncc_state != MNCC_STATE_STARTED) { | 100 if (call->mncc_state != MNCC_STATE_STARTED) { |
115 disconnect_tmgw(call); | 128 disconnect_tmgw(call); |
116 strcpy(call->invite_fail, "502 Internal protocol error"); | 129 strcpy(call->invite_fail, "502 Internal protocol error"); |
117 signal_invite_error(call); | 130 signal_invite_error(call); |
118 return; | 131 return; |
119 } | 132 } |
133 send_rtp_connect(call); | |
120 tmgw_send_mdcx_connect(call); | 134 tmgw_send_mdcx_connect(call); |
121 } | 135 } |
122 | 136 |
123 static void | 137 static void |
124 handle_disconnect_ind(call, msg) | 138 handle_disconnect_ind(call, msg) |
282 } | 296 } |
283 /* save Osmocom network RTP information */ | 297 /* save Osmocom network RTP information */ |
284 bcopy(&msg->addr, &call->gsm_rtp_osmo, sizeof(struct sockaddr_storage)); | 298 bcopy(&msg->addr, &call->gsm_rtp_osmo, sizeof(struct sockaddr_storage)); |
285 call->gsm_payload_type = msg->payload_type; | 299 call->gsm_payload_type = msg->payload_type; |
286 call->gsm_payload_msg_type = msg->payload_msg_type; | 300 call->gsm_payload_msg_type = msg->payload_msg_type; |
287 /* respond with MNCC_RTP_CONNECT */ | |
288 msg->msg_type = MNCC_RTP_CONNECT; | |
289 bcopy(&call->gsm_rtp_tmgw, &msg->addr, sizeof(struct sockaddr_storage)); | |
290 send_mncc_to_gsm(msg, sizeof(struct gsm_mncc_rtp)); | |
291 } | 301 } |
292 | 302 |
293 void | 303 void |
294 msg_from_mncc(msg, msglen) | 304 msg_from_mncc(msg, msglen) |
295 union mncc_msg *msg; | 305 union mncc_msg *msg; |