Fixed null-pointer bug when GSM support is disabled
[lcr.git] / action.cpp
index aa83304..b7dfc58 100644 (file)
@@ -111,6 +111,8 @@ void EndpointAppPBX::action_dialing_internal(void)
                        capainfo.bearer_mode = INFO_BMODE_PACKET;
                }
                capainfo.bearer_info1 = INFO_INFO1_NONE;
+               capainfo.hlc = INFO_HLC_NONE;
+               capainfo.exthlc = INFO_HLC_NONE;
        }
        if ((rparam = routeparam(e_action, PARAM_BMODE))) {
                capainfo.bearer_mode = rparam->integer_value;
@@ -206,7 +208,7 @@ void EndpointAppPBX::action_dialing_external(void)
        memcpy(&redirinfo, &e_redirinfo, sizeof(redirinfo));
        memset(&dialinginfo, 0, sizeof(dialinginfo));
        dialinginfo.itype = INFO_ITYPE_ISDN;
-       dialinginfo.sending_complete = 0;
+//     dialinginfo.sending_complete = 0;
        SCPY(dialinginfo.id, e_extdialing);
 
        /* process prefix */
@@ -221,8 +223,6 @@ void EndpointAppPBX::action_dialing_external(void)
 
        /* process number complete */
        if ((rparam = routeparam(e_action, PARAM_COMPLETE)))
-               if ((rparam = routeparam(e_action, PARAM_PREFIX)))
-                       SCPY(dialinginfo.id, rparam->string_value);
                dialinginfo.sending_complete = 1;
 
        /* process number type */
@@ -237,6 +237,8 @@ void EndpointAppPBX::action_dialing_external(void)
                        capainfo.bearer_mode = INFO_BMODE_PACKET;
                }
                capainfo.bearer_info1 = INFO_INFO1_NONE;
+               capainfo.hlc = INFO_HLC_NONE;
+               capainfo.exthlc = INFO_HLC_NONE;
        }
        if ((rparam = routeparam(e_action, PARAM_BMODE))) {
                capainfo.bearer_mode = rparam->integer_value;
@@ -309,6 +311,8 @@ void EndpointAppPBX::action_dialing_external(void)
        /* add or update outgoing call */
        trace_header("ACTION extern (calling)", DIRECTION_NONE);
        add_trace("number", NULL, dialinginfo.id);
+       if (dialinginfo.sending_complete)
+       add_trace("number", "complete", "yes");
        if (dialinginfo.interfaces[0])
                add_trace("interfaces", NULL, dialinginfo.interfaces);
        end_trace();
@@ -1961,7 +1965,7 @@ void EndpointAppPBX::action_execute(void)
        int iWaitStatus;
        char *command = (char *)"";
        char isdn_port[10];
-       char *argv[11]; /* check also number of args below */
+       char *argv[12]; /* check also number of args below */
        int i = 0;
 
        /* get script / command */
@@ -1985,6 +1989,7 @@ void EndpointAppPBX::action_execute(void)
        argv[i++] = e_callerinfo.name;
        SPRINT(isdn_port, "%d", e_callerinfo.isdn_port);
        argv[i++] = isdn_port;
+       argv[i++] = e_callerinfo.imsi;
        argv[i++] = NULL; /* check also number of args above */
        switch (pid = fork ()) {
                case -1: