diff --git a/libs/freetdm/mod_openzap/mod_openzap.c b/libs/freetdm/mod_openzap/mod_openzap.c index 89e1e2a9f8..defdc25a8a 100644 --- a/libs/freetdm/mod_openzap/mod_openzap.c +++ b/libs/freetdm/mod_openzap/mod_openzap.c @@ -2742,35 +2742,64 @@ SWITCH_STANDARD_API(oz_function) for (j = 0 ; j < ZAP_MAX_SPANS_INTERFACE; j++) { if (SPAN_CONFIG[j].span) { const char *flags = "none"; + zap_channel_sig_status_t chanstatus; if (SPAN_CONFIG[j].analog_options & ANALOG_OPTION_3WAY) { flags = "3way"; } else if (SPAN_CONFIG[j].analog_options & ANALOG_OPTION_CALL_SWAP) { flags = "call swap"; } - - stream->write_function(stream, - "+OK\n" - "span: %u (%s)\n" - "type: %s\n" - "chan_count: %u\n" - "dialplan: %s\n" - "context: %s\n" - "dial_regex: %s\n" - "fail_dial_regex: %s\n" - "hold_music: %s\n" - "analog_options %s\n", - j, - SPAN_CONFIG[j].span->name, - SPAN_CONFIG[j].type, - SPAN_CONFIG[j].span->chan_count, - SPAN_CONFIG[j].dialplan, - SPAN_CONFIG[j].context, - SPAN_CONFIG[j].dial_regex, - SPAN_CONFIG[j].fail_dial_regex, - SPAN_CONFIG[j].hold_music, - flags - ); + + /* check signaling status just in the first span channel */ + if ((ZAP_SUCCESS == zap_channel_get_sig_status(SPAN_CONFIG[j].span->channels[1], &chanstatus))) { + stream->write_function(stream, + "+OK\n" + "span: %u (%s)\n" + "type: %s\n" + "signaling_status: %s\n" + "chan_count: %u\n" + "dialplan: %s\n" + "context: %s\n" + "dial_regex: %s\n" + "fail_dial_regex: %s\n" + "hold_music: %s\n" + "analog_options %s\n", + j, + SPAN_CONFIG[j].span->name, + SPAN_CONFIG[j].type, + zap_sig_status2str(chanstatus), + SPAN_CONFIG[j].span->chan_count, + SPAN_CONFIG[j].dialplan, + SPAN_CONFIG[j].context, + SPAN_CONFIG[j].dial_regex, + SPAN_CONFIG[j].fail_dial_regex, + SPAN_CONFIG[j].hold_music, + flags + ); + } else { + stream->write_function(stream, + "+OK\n" + "span: %u (%s)\n" + "type: %s\n" + "chan_count: %u\n" + "dialplan: %s\n" + "context: %s\n" + "dial_regex: %s\n" + "fail_dial_regex: %s\n" + "hold_music: %s\n" + "analog_options %s\n", + j, + SPAN_CONFIG[j].span->name, + SPAN_CONFIG[j].type, + SPAN_CONFIG[j].span->chan_count, + SPAN_CONFIG[j].dialplan, + SPAN_CONFIG[j].context, + SPAN_CONFIG[j].dial_regex, + SPAN_CONFIG[j].fail_dial_regex, + SPAN_CONFIG[j].hold_music, + flags + ); + } } } } else if (!strcasecmp(argv[0], "stop") || !strcasecmp(argv[0], "start")) { diff --git a/libs/freetdm/src/zap_io.c b/libs/freetdm/src/zap_io.c index 75fa7339db..f4627ea7fe 100644 --- a/libs/freetdm/src/zap_io.c +++ b/libs/freetdm/src/zap_io.c @@ -1259,18 +1259,15 @@ OZ_DECLARE(zap_status_t) zap_channel_outgoing_call(zap_channel_t *zchan) OZ_DECLARE(zap_status_t) zap_channel_get_sig_status(zap_channel_t *zchan, zap_channel_sig_status_t *sigstatus) { - zap_status_t status; - zap_assert(zchan != NULL, ZAP_FAIL, "Null channel\n"); zap_assert(sigstatus != NULL, ZAP_FAIL, "Null sig status"); if (zchan->span->get_sig_status) { - status = zchan->span->get_sig_status(zchan, sigstatus); + return zchan->span->get_sig_status(zchan, sigstatus); } else { zap_log(ZAP_LOG_ERROR, "get_sig_status method not implemented!\n"); + return ZAP_FAIL; } - - return ZAP_FAIL; } OZ_DECLARE(zap_status_t) zap_channel_done(zap_channel_t *zchan)