From b4f5e950fcb7a43cd184253d0e35964fc6ff925f Mon Sep 17 00:00:00 2001 From: Andreas Eversberg Date: Sat, 19 Aug 2023 10:55:19 +0200 Subject: [PATCH] Fix channel selection for PTMP/NT-Mode Channel selection in that mode must be forced, so that the TE nay not select a different channel. In that mode the TE cannot know what channel is allocated, so it cannot select a different channel. Eumex PBX rejects calls without this fix. --- src/isdn/isdn.c | 3 +++ src/isdn/main.c | 6 +++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/isdn/isdn.c b/src/isdn/isdn.c index aec2c0c..d3e6366 100644 --- a/src/isdn/isdn.c +++ b/src/isdn/isdn.c @@ -74,6 +74,9 @@ static void default_out_channel(isdn_t *isdn_ep) { struct select_channel *selchannel; + if (isdn_ep->ntmode) + isdn_ep->out_channel_exclusive = 1; + selchannel = calloc(1, sizeof(struct select_channel)); if (isdn_ep->ntmode) selchannel->channel = CHANNEL_FREE; diff --git a/src/isdn/main.c b/src/isdn/main.c index 1597b89..e4e9725 100644 --- a/src/isdn/main.c +++ b/src/isdn/main.c @@ -100,11 +100,14 @@ static void print_help() printf(" Channel selection list for all outgoing calls to the interface.\n"); printf(" A free channels is searched in order of appearance.\n"); printf(" force - Forces the selected port with no acceptable alternative.\n"); - printf(" -> this will be automatically set for multipoint NT-mode ports\n"); + printf(" -> this must be used for multipoint NT-mode ports\n"); printf(" [,...] - List of channels to search.\n"); printf(" free - Select any free channel\n"); printf(" any - On outgoing calls, signal 'any channel acceptable'. (see DSS1)\n"); printf(" no - Signal 'no channel available' aka 'call waiting'. (see DSS1)\n"); + printf(" Default for multipoint NT-Mode: 'force,free,no'\n"); + printf(" Default for point-to-point NT-Mode: 'force,free'\n"); + printf(" Default for TE-Mode: 'any'\n"); printf(" --channel-in [][,...][,free]\n"); printf(" Give list of channels to select for calls from ISDN\n"); printf(" Channel selection list for all incoming calls from the interface.\n"); @@ -112,6 +115,7 @@ static void print_help() printf(" If any channel was requested, the first free channel found is selected.\n"); printf(" [,...] - List of channels to accept.\n"); printf(" free - Accept any free channel\n"); + printf(" Default: 'free'\n"); printf(" --timeouts ,,,,\n"); printf(" Alter ISDN protocol times.\n");