From a8f1e26d343407ef7b650d8b969680924400894f Mon Sep 17 00:00:00 2001 From: Alexander Anikin Date: Thu, 11 Apr 2019 02:07:18 +0300 Subject: [PATCH] chan_ooh323: fix h323 log file path Change h323 log path relative to AST_LOG_DIR instead of /var/log/asterisk hardcoded Add return back error message from OOH323EP initialize ASTERISK-28348 #close Reported by: Dmitry Shubin Change-Id: Ib102dd36bbe6c2a7a4ce6870ae9110d9000d7e98 --- addons/chan_ooh323.c | 19 ++++++++++++------- addons/chan_ooh323.h | 1 + addons/ooh323c/src/ooh323ep.c | 6 +++--- addons/ooh323c/src/ooh323ep.h | 2 +- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/addons/chan_ooh323.c b/addons/chan_ooh323.c index 6a65b5fff9..3fe29cc995 100644 --- a/addons/chan_ooh323.c +++ b/addons/chan_ooh323.c @@ -82,7 +82,7 @@ /* Defaults */ #define DEFAULT_CONTEXT "default" #define DEFAULT_H323ID "Asterisk PBX" -#define DEFAULT_LOGFILE "/var/log/asterisk/h323_log" +#define DEFAULT_LOGFILE "h323_log" #define DEFAULT_H323ACCNT "ast_h323" /* Flags */ @@ -346,7 +346,8 @@ void onModeChanged(ooCallData *call, int t38mode); extern OOH323EndPoint gH323ep; -static char gLogFile[256] = DEFAULT_LOGFILE; +static char gLogFile[PATH_MAX] = DEFAULT_LOGFILE; +static char gInitError[256] = ""; static int gPort = 1720; static char gIP[2+8*4+7]; /* Max for IPv6 addr */ struct ast_sockaddr bindaddr; @@ -2856,7 +2857,7 @@ int reload_config(int reload) } /* Inintialize everything to default */ - strcpy(gLogFile, DEFAULT_LOGFILE); + snprintf(gLogFile, sizeof(gLogFile), "%s/%s", ast_config_AST_LOG_DIR, DEFAULT_LOGFILE); gPort = 1720; gIP[0] = '\0'; strcpy(gCallerID, DEFAULT_H323ID); @@ -3034,7 +3035,11 @@ int reload_config(int reload) ast_copy_string(gRASIP, v->value, sizeof(gRASIP)); ast_verb(3, " == Setting RAS IP to %s\n", gRASIP); } else if (!strcasecmp(v->name, "logfile")) { - ast_copy_string(gLogFile, v->value, sizeof(gLogFile)); + if (v->value[0] == '/') { + ast_copy_string(gLogFile, v->value, sizeof(gLogFile)); + } else { + snprintf(gLogFile, sizeof(gLogFile), "%s/%s", ast_config_AST_LOG_DIR, v->value); + } } else if (!strcasecmp(v->name, "context")) { ast_copy_string(gContext, v->value, sizeof(gContext)); ast_verb(3, " == Setting default context to %s\n", gContext); @@ -3838,9 +3843,9 @@ static int load_module(void) if (!reload_config(0)) { /* fire up the H.323 Endpoint */ - if (OO_OK != ooH323EpInitialize(OO_CALLMODE_AUDIOCALL, gLogFile)) { - ast_log(LOG_ERROR, "Failed to initialize OOH323 endpoint-" - "OOH323 Disabled\n"); + if (OO_OK != ooH323EpInitialize(OO_CALLMODE_AUDIOCALL, gLogFile, gInitError, sizeof(gInitError))) { + ast_log(LOG_ERROR, "Failed to initialize OOH323 endpoint: %s" + "OOH323 Disabled\n", gInitError); ao2_ref(gCap, -1); gCap = NULL; ao2_ref(ooh323_tech.capabilities, -1); diff --git a/addons/chan_ooh323.h b/addons/chan_ooh323.h index e4d285e379..1bd3812dc5 100644 --- a/addons/chan_ooh323.h +++ b/addons/chan_ooh323.h @@ -65,6 +65,7 @@ #include "asterisk/udptl.h" #include "asterisk/stasis_channels.h" #include "asterisk/format_cache.h" +#include "asterisk/paths.h" #include "ootypes.h" #include "ooUtils.h" diff --git a/addons/ooh323c/src/ooh323ep.c b/addons/ooh323c/src/ooh323ep.c index 1dedecdb8f..be43896e18 100644 --- a/addons/ooh323c/src/ooh323ep.c +++ b/addons/ooh323c/src/ooh323ep.c @@ -34,7 +34,7 @@ ast_mutex_t bindPortLock; extern DList g_TimerList; int ooH323EpInitialize - (enum OOCallMode callMode, const char* tracefile) + (enum OOCallMode callMode, const char* tracefile, char* errstr, int errstr_max) { memset(&gH323ep, 0, sizeof(ooEndPoint)); @@ -46,7 +46,7 @@ int ooH323EpInitialize { if(strlen(tracefile)>= MAXFILENAME) { - printf("Error:File name longer than allowed maximum %d\n", + snprintf(errstr, errstr_max, "Error:File name longer than allowed maximum %d\n", MAXFILENAME-1); return OO_FAILED; } @@ -59,7 +59,7 @@ int ooH323EpInitialize gH323ep.fptraceFile = fopen(gH323ep.traceFile, "a"); if(gH323ep.fptraceFile == NULL) { - printf("Error:Failed to open trace file %s for write.\n", + snprintf(errstr, errstr_max, "Error:Failed to open trace file %s for write.\n", gH323ep.traceFile); return OO_FAILED; } diff --git a/addons/ooh323c/src/ooh323ep.h b/addons/ooh323c/src/ooh323ep.h index a77b9e38a4..5c9c3dd30e 100644 --- a/addons/ooh323c/src/ooh323ep.h +++ b/addons/ooh323c/src/ooh323ep.h @@ -163,7 +163,7 @@ typedef struct OOH323EndPoint { * @return OO_OK, on success. OO_FAILED, on failure */ EXTERN int ooH323EpInitialize - (enum OOCallMode callMode, const char* tracefile); + (enum OOCallMode callMode, const char* tracefile, char* errstr, int errstr_max); /** * This function is used to represent the H.323 application endpoint as