add_trace("keypad", NULL, "%c", mncc->keypad);
end_trace();
resp = create_mncc(MNCC_START_DTMF_RSP, p_m_g_callref);
+ resp->fields |= MNCC_F_KEYPAD;
resp->keypad = mncc->keypad;
send_and_free_mncc(p_m_g_instance, resp->msg_type, resp);
memcpy(&p_capainfo, ¶m->setup.capainfo, sizeof(p_capainfo));
memcpy(&p_redirinfo, ¶m->setup.redirinfo, sizeof(p_redirinfo));
+ /* no GSM MNCC connection */
+ if (gsm->mncc_lfd.fd < 0) {
+ gsm_trace_header(p_m_mISDNport, this, MNCC_SETUP_REQ, DIRECTION_OUT);
+ add_trace("failure", NULL, "No MNCC connection.");
+ end_trace();
+ message = message_create(p_serial, epoint_id, PORT_TO_EPOINT, MESSAGE_RELEASE);
+ message->param.disconnectinfo.cause = 27; // temp. unavail.
+ message->param.disconnectinfo.location = LOCATION_PRIVATE_LOCAL;
+ message_put(message);
+ new_state(PORT_STATE_RELEASE);
+ trigger_work(&p_m_g_delete);
+ return;
+ }
+
/* no number */
if (!p_dialinginfo.id[0]) {
gsm_trace_header(p_m_mISDNport, this, MNCC_SETUP_REQ, DIRECTION_OUT);
return mncc_fd_close(lfd);
if (rc < 0)
return rc;
- if (rc < qe->len)
+ if (rc < (int)qe->len)
return -1;
/* dequeue the successfully sent message */
qe2 = mncc_q_dequeue();
int gsm_bs_init(void)
{
gsm->sun.sun_family = AF_UNIX;
- strcpy(gsm->sun.sun_path, "/tmp/bsc_mncc");
+ SCPY(gsm->sun.sun_path, "/tmp/bsc_mncc");
memset(&gsm->socket_retry, 0, sizeof(gsm->socket_retry));
add_timer(&gsm->socket_retry, socket_retry_cb, NULL, 0);