Bearer Capability is mandatory in CALL CONF. message, if not in SETUP.
authorAndreas Eversberg <jolly@eversberg.eu>
Sun, 25 Mar 2012 14:38:43 +0000 (16:38 +0200)
committerAndreas Eversberg <jolly@eversberg.eu>
Sun, 25 Mar 2012 15:08:36 +0000 (17:08 +0200)
gsm_ms.cpp

index 1726543..7c43232 100644 (file)
@@ -282,7 +282,17 @@ void Pgsm_ms::setup_ind(unsigned int msg_type, unsigned int callref, struct gsm_
        /* send call proceeding */
        gsm_trace_header(p_g_interface_name, this, MNCC_CALL_CONF_REQ, DIRECTION_OUT);
        proceeding = create_mncc(MNCC_CALL_CONF_REQ, p_g_callref);
-       // FIXME: bearer
+       /* bearer capability (mandatory, if not present in setup message) */
+       if (!(mncc->fields & MNCC_F_BEARER_CAP)) {
+               proceeding->fields |= MNCC_F_BEARER_CAP;
+               proceeding->bearer_cap.coding = 0;
+               proceeding->bearer_cap.radio = 1;
+               proceeding->bearer_cap.speech_ctm = 0;
+               proceeding->bearer_cap.speech_ver[0] = 0;
+               proceeding->bearer_cap.speech_ver[1] = -1; /* end of list */
+               proceeding->bearer_cap.transfer = 0;
+               proceeding->bearer_cap.mode = 0;
+       }
        /* DTMF supported */
        proceeding->fields |= MNCC_F_CCCAP;
        proceeding->cccap.dtmf = 1;