X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=lcr.git;a=blobdiff_plain;f=apppbx.cpp;h=75856d477053d655eda5f07d638af767899370ac;hp=bf7988b81fbaf223de4ad2ac343c9b53e89adb5f;hb=145f8adab1d00f6ddd45a435a70400546d4bcdbc;hpb=5463e1b62a39ce417b610584e3d34a8bc30ac15e diff --git a/apppbx.cpp b/apppbx.cpp index bf7988b..75856d4 100644 --- a/apppbx.cpp +++ b/apppbx.cpp @@ -26,7 +26,7 @@ int callback_timeout(struct lcr_timer *timer, void *instance, int index); /* * EndpointAppPBX constructor */ -EndpointAppPBX::EndpointAppPBX(class Endpoint *epoint, int origin) : EndpointApp(epoint, origin) +EndpointAppPBX::EndpointAppPBX(class Endpoint *epoint, int origin) : EndpointApp(epoint, origin, EAPP_TYPE_PBX) { class EndpointAppPBX **apppointer; @@ -1006,6 +1006,7 @@ void EndpointAppPBX::out_setup(int cfnr) p = e_ext.interfaces; PDEBUG(DEBUG_EPOINT, "EPOINT(%d) generating multiple joins for extension %s to interfaces %s\n", ea_endpoint->ep_serial, e_dialinginfo.id, p); while(*p) { + earlyb = 0; ifname[0] = '\0'; while(*p!=',' && *p!='\0') if (*p > ' ') @@ -1026,18 +1027,21 @@ void EndpointAppPBX::out_setup(int cfnr) if (interface->gsm_bs) { SPRINT(portname, "%s-%d-out", interface->name, 0); port = new Pgsm_bs(PORT_TYPE_GSM_BS_OUT, portname, &port_settings, interface); + earlyb = (interface->is_earlyb == IS_YES); } else #endif #ifdef WITH_GSM_MS if (interface->gsm_ms) { SPRINT(portname, "%s-%d-out", interface->name, 0); port = new Pgsm_ms(PORT_TYPE_GSM_MS_OUT, portname, &port_settings, interface); + earlyb = (interface->is_earlyb == IS_YES); } else #endif #ifdef WITH_GSM_MS if (interface->sip) { SPRINT(portname, "%s-%d-out", interface->name, 0); port = new Psip(PORT_TYPE_SIP_OUT, portname, &port_settings, interface); + earlyb = (interface->is_earlyb == IS_YES); } else #endif { @@ -1072,6 +1076,7 @@ void EndpointAppPBX::out_setup(int cfnr) port = new Premote(PORT_TYPE_REMOTE_OUT, mISDNport, portname, &port_settings, channel, mISDNport->ifport->channel_force, mode, admin->sock); } else port = new Pdss1((mISDNport->ntmode)?PORT_TYPE_DSS1_NT_OUT:PORT_TYPE_DSS1_TE_OUT, mISDNport, portname, &port_settings, channel, mISDNport->ifport->channel_force, mode); + earlyb = mISDNport->earlyb; } if (!port) FATAL("Failed to create Port instance\n"); @@ -1081,7 +1086,7 @@ void EndpointAppPBX::out_setup(int cfnr) dialinginfo.itype = INFO_ITYPE_ISDN_EXTENSION; dialinginfo.ntype = e_dialinginfo.ntype; /* create port_list relation */ - portlist = ea_endpoint->portlist_new(port->p_serial, port->p_type, interface->is_earlyb == IS_YES); + portlist = ea_endpoint->portlist_new(port->p_serial, port->p_type, earlyb); if (!portlist) { PERROR("EPOINT(%d) cannot allocate port_list relation\n", ea_endpoint->ep_serial); delete port; @@ -1259,6 +1264,7 @@ void EndpointAppPBX::out_setup(int cfnr) else p = e_dialinginfo.id; do { + earlyb = 0; number[0] = '\0'; while(*p!=',' && *p!='\0') SCCAT(number, *p++); @@ -1279,18 +1285,21 @@ void EndpointAppPBX::out_setup(int cfnr) if (interface->gsm_bs) { SPRINT(portname, "%s-%d-out", interface->name, 0); port = new Pgsm_bs(PORT_TYPE_GSM_BS_OUT, portname, &port_settings, interface); + earlyb = (interface->is_earlyb == IS_YES); } else #endif #ifdef WITH_GSM_MS if (interface->gsm_ms) { SPRINT(portname, "%s-%d-out", interface->name, 0); port = new Pgsm_ms(PORT_TYPE_GSM_MS_OUT, portname, &port_settings, interface); + earlyb = (interface->is_earlyb == IS_YES); } else #endif #ifdef WITH_GSM_MS if (interface->sip) { SPRINT(portname, "%s-%d-out", interface->name, 0); port = new Psip(PORT_TYPE_SIP_OUT, portname, &port_settings, interface); + earlyb = (interface->is_earlyb == IS_YES); } else #endif { @@ -1325,10 +1334,10 @@ void EndpointAppPBX::out_setup(int cfnr) port = new Premote(PORT_TYPE_REMOTE_OUT, mISDNport, portname, &port_settings, channel, mISDNport->ifport->channel_force, mode, admin->sock); } else port = new Pdss1((mISDNport->ntmode)?PORT_TYPE_DSS1_NT_OUT:PORT_TYPE_DSS1_TE_OUT, mISDNport, portname, &port_settings, channel, mISDNport->ifport->channel_force, mode); + earlyb = mISDNport->earlyb; } if (!port) FATAL("No memory for Port instance\n"); - earlyb = (interface->is_earlyb == IS_YES); PDEBUG(DEBUG_EPOINT, "EPOINT(%d) created port %s\n", ea_endpoint->ep_serial, port->p_name); memset(&dialinginfo, 0, sizeof(dialinginfo)); if (e_dialinginfo.keypad[0])