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
This commit is contained in:
parent
eefd53b718
commit
c2621aa190
|
@ -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(pgappname)) {
|
||||
ast_str_append(&conn_info, 0, " application_name=%s", pgappname);
|
||||
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);
|
||||
}
|
||||
|
||||
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));
|
||||
|
|
Loading…
Reference in New Issue