From: Chris-Savinovich Date: Tue, 4 Jun 2019 17:41:33 +0000 (-0500) Subject: cdr_pgsql: fix error in connection string X-Git-Tag: 16.5.0-rc1~21^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c2621aa190a167f49e9bee9324db9d0540ee4b3a;p=thirdparty%2Fasterisk.git cdr_pgsql: fix error in connection string Fixes an error occurring in function pgsql_reconnect() caused when value of hostname is blank. Which in turn will cause the connection string to look like this: "host= port=xx", which creates a sintax error. This fix now checks if the corresponding values for host, port, dbname, and user are blank. Note that since this is a reconnect function the database library will replace any missing value pairs with default ones. ASTERISK-28435 Change-Id: I0a921f99bbd265768be08cd492f04b30855b8423 --- diff --git a/cdr/cdr_pgsql.c b/cdr/cdr_pgsql.c index a4919d57f7..1a3f9d6de7 100644 --- a/cdr/cdr_pgsql.c +++ b/cdr/cdr_pgsql.c @@ -184,15 +184,27 @@ static void pgsql_reconnect(void) conn = NULL; } - ast_str_set(&conn_info, 0, "host=%s port=%s dbname=%s user=%s", - pghostname, pgdbport, pgdbname, pgdbuser); - + if (!ast_strlen_zero(pghostname)) { + ast_str_append(&conn_info, 0, "host=%s ", pghostname); + } + if (!ast_strlen_zero(pgdbport)) { + ast_str_append(&conn_info, 0, "port=%s ", pgdbport); + } + if (!ast_strlen_zero(pgdbname)) { + ast_str_append(&conn_info, 0, "dbname=%s ", pgdbname); + } + if (!ast_strlen_zero(pgdbuser)) { + ast_str_append(&conn_info, 0, "user=%s ", pgdbuser); + } if (!ast_strlen_zero(pgappname)) { - ast_str_append(&conn_info, 0, " application_name=%s", pgappname); + ast_str_append(&conn_info, 0, "application_name=%s ", pgappname); } - if (!ast_strlen_zero(pgpassword)) { - ast_str_append(&conn_info, 0, " password=%s", pgpassword); + ast_str_append(&conn_info, 0, "password=%s", pgpassword); + } + if (ast_str_strlen(conn_info) == 0) { + ast_log(LOG_ERROR, "Connection string is blank.\n"); + return; } conn = PQconnectdb(ast_str_buffer(conn_info));