[svn-commits] tilghman: trunk r104036 - /trunk/res/res_config_pgsql.c

SVN commits to the Digium repositories svn-commits at lists.digium.com
Fri Feb 22 16:39:21 CST 2008


Author: tilghman
Date: Fri Feb 22 16:39:21 2008
New Revision: 104036

URL: http://svn.digium.com/view/asterisk?view=rev&rev=104036
Log:
Allow database password to be NULL and several other cleanups.
(closes issue #12048)
 Reported by: bukaj
 Patches: 
       20080222__bug12048.diff.txt uploaded by Corydon76 (license 14)
 Tested by: bukaj

Modified:
    trunk/res/res_config_pgsql.c

Modified: trunk/res/res_config_pgsql.c
URL: http://svn.digium.com/view/asterisk/trunk/res/res_config_pgsql.c?view=diff&rev=104036&r1=104035&r2=104036
==============================================================================
--- trunk/res/res_config_pgsql.c (original)
+++ trunk/res/res_config_pgsql.c Fri Feb 22 16:39:21 2008
@@ -912,23 +912,21 @@
 		pgsqlConn = NULL;
 	}
 
-	if ((!pgsqlConn) && (!ast_strlen_zero(dbhost) || !ast_strlen_zero(dbsock)) && !ast_strlen_zero(dbuser) && !ast_strlen_zero(dbpass) && !ast_strlen_zero(my_database)) {
-		char *connInfo = NULL;
-		unsigned int size = 100 + strlen(dbhost)
-			+ strlen(dbuser)
-			+ strlen(dbpass)
-			+ strlen(my_database);
-		
-		if (!(connInfo = ast_malloc(size)))
-			return 0;
-		
-		sprintf(connInfo, "host=%s port=%d dbname=%s user=%s password=%s",
-					dbhost, dbport, my_database, dbuser, dbpass);
-		ast_debug(1, "%u connInfo=%s\n", size, connInfo);
-		pgsqlConn = PQconnectdb(connInfo);
-		ast_debug(1, "%u connInfo=%s\n", size, connInfo);
+	/* DB password can legitimately be 0-length */
+	if ((!pgsqlConn) && (!ast_strlen_zero(dbhost) || !ast_strlen_zero(dbsock)) && !ast_strlen_zero(dbuser) && dbpass && !ast_strlen_zero(my_database)) {
+		struct ast_str *connInfo = ast_str_create(32);
+
+		ast_str_set(&connInfo, 0, "host=%s port=%d dbname=%s user=%s",
+			dbhost, dbport, my_database, dbuser);
+		if (!ast_strlen_zero(dbpass))
+			ast_str_append(&connInfo, 0, " password=%s", dbpass);
+
+		ast_debug(1, "%u connInfo=%s\n", connInfo->len, connInfo->str);
+		pgsqlConn = PQconnectdb(connInfo->str);
+		ast_debug(1, "%u connInfo=%s\n", connInfo->len, connInfo->str);
 		ast_free(connInfo);
 		connInfo = NULL;
+
 		ast_debug(1, "pgsqlConn=%p\n", pgsqlConn);
 		if (pgsqlConn && PQstatus(pgsqlConn) == CONNECTION_OK) {
 			ast_debug(1, "PostgreSQL RealTime: Successfully connected to database.\n");
@@ -936,13 +934,12 @@
 			return 1;
 		} else {
 			ast_log(LOG_ERROR,
-					"PostgreSQL RealTime: Failed to connect database server %s on %s. Check debug for more info.\n",
-					dbname, dbhost);
-			ast_debug(1, "PostgreSQL RealTime: Cannot Connect: %s\n", PQresultErrorMessage(NULL));
+					"PostgreSQL RealTime: Failed to connect database %s on %s: %s\n",
+					dbname, dbhost, PQresultErrorMessage(NULL));
 			return 0;
 		}
 	} else {
-		ast_debug(1, "PostgreSQL RealTime: Everything is fine.\n");
+		ast_debug(1, "PostgreSQL RealTime: One or more of the parameters in the config does not pass our validity checks.\n");
 		return 1;
 	}
 }




More information about the svn-commits mailing list