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;