Construct socket name, according to the Postgres docs, and document as such.
authorTilghman Lesher <tilghman@meg.abyt.es>
Wed, 26 May 2010 16:14:48 +0000 (16:14 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Wed, 26 May 2010 16:14:48 +0000 (16:14 +0000)
(closes issue #17392)
 Reported by: dps
 Patches:
       20100525__issue17392.diff.txt uploaded by tilghman (license 14)
 Tested by: dps

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@265894 65c4cc65-6c06-0410-ace0-fbb531ad65f3

configs/res_pgsql.conf.sample
res/res_config_pgsql.c

index cfb8538..b889244 100644 (file)
@@ -13,6 +13,13 @@ dbname=asterisk
 dbuser=asterisk
 dbpass=password
 ;
+; dbsock is specified as the directory where the socket file may be found. The
+; actual socket is constructed as a combination of dbsock and dbport.  For
+; example, the values of '/tmp' and '5432', respectively, will specify a socket
+; file of '/tmp/.s.PGSQL.5432'.
+; 
+;dbsock=/tmp
+;
 ; requirements - At startup, each realtime family will make requirements
 ; on the backend.  There are several strategies for handling requirements:
 ; warn        - Warn if the required column does not exist.
index e4bffd3..9a6650f 100644 (file)
@@ -1391,8 +1391,8 @@ static int parse_config(int is_reload)
                /* No socket needed */
        } else if (!(s = ast_variable_retrieve(config, "general", "dbsock"))) {
                ast_log(LOG_WARNING,
-                               "PostgreSQL RealTime: No database socket found, using '/tmp/pgsql.sock' as default.\n");
-               strcpy(dbsock, "/tmp/pgsql.sock");
+                               "PostgreSQL RealTime: No database socket found, using '/tmp/.s.PGSQL.%d' as default.\n", dbport);
+               strcpy(dbsock, "/tmp");
        } else {
                ast_copy_string(dbsock, s, sizeof(dbsock));
        }
@@ -1453,7 +1453,7 @@ static int pgsql_reconnect(const char *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);
+                       S_OR(dbhost, dbsock), dbport, my_database, dbuser);
                if (!ast_strlen_zero(dbpass))
                        ast_str_append(&connInfo, 0, " password=%s", dbpass);