diff --git a/net/common/ccnet-db.c b/net/common/ccnet-db.c index 57415c0..e7dccd3 100644 --- a/net/common/ccnet-db.c +++ b/net/common/ccnet-db.c @@ -56,6 +56,7 @@ ccnet_db_new_mysql (const char *host, CcnetDB * ccnet_db_new_pgsql (const char *host, + unsigned int port, const char *user, const char *passwd, const char *db_name, @@ -72,7 +73,7 @@ ccnet_db_new_pgsql (const char *host, db->type = CCNET_DB_TYPE_PGSQL; - db->pool = db_conn_pool_new_pgsql (host, user, passwd, db_name, unix_socket, + db->pool = db_conn_pool_new_pgsql (host, port, user, passwd, db_name, unix_socket, max_connections); return db; diff --git a/net/common/ccnet-db.h b/net/common/ccnet-db.h index fd9cf0e..60749c6 100644 --- a/net/common/ccnet-db.h +++ b/net/common/ccnet-db.h @@ -30,6 +30,7 @@ ccnet_db_new_mysql (const char *host, CcnetDB * ccnet_db_new_pgsql (const char *host, + unsigned int port, const char *user, const char *passwd, const char *db_name, diff --git a/net/common/db-wrapper/db-wrapper.c b/net/common/db-wrapper/db-wrapper.c index e6fb7cc..7812c1b 100644 --- a/net/common/db-wrapper/db-wrapper.c +++ b/net/common/db-wrapper/db-wrapper.c @@ -95,6 +95,7 @@ db_conn_pool_new_mysql (const char *host, DBConnPool * db_conn_pool_new_pgsql (const char *host, + unsigned int port, const char *user, const char *password, const char *db_name, @@ -124,7 +125,7 @@ db_conn_pool_new_pgsql (const char *host, DBConnPool *pool; - pool = pgsql_db_conn_pool_new (host, user, password, db_name, unix_socket); + pool = pgsql_db_conn_pool_new (host, port, user, password, db_name, unix_socket); init_conn_pool_common (pool, max_connections); return pool; diff --git a/net/common/db-wrapper/db-wrapper.h b/net/common/db-wrapper/db-wrapper.h index 4d3fdc8..2125af8 100644 --- a/net/common/db-wrapper/db-wrapper.h +++ b/net/common/db-wrapper/db-wrapper.h @@ -29,6 +29,7 @@ db_conn_pool_new_mysql (const char *host, DBConnPool * db_conn_pool_new_pgsql (const char *host, + unsigned int port, const char *user, const char *password, const char *db_name, diff --git a/net/common/db-wrapper/pgsql-db-ops.c b/net/common/db-wrapper/pgsql-db-ops.c index 9ec69a6..4521f52 100644 --- a/net/common/db-wrapper/pgsql-db-ops.c +++ b/net/common/db-wrapper/pgsql-db-ops.c @@ -8,6 +8,7 @@ typedef struct PGDBConnPool { DBConnPool parent; char *host; + unsigned int port; char *user; char *password; char *db_name; @@ -16,6 +17,7 @@ typedef struct PGDBConnPool { DBConnPool * pgsql_db_conn_pool_new (const char *host, + unsigned int port, const char *user, const char *password, const char *db_name, @@ -24,6 +26,7 @@ pgsql_db_conn_pool_new (const char *host, PGDBConnPool *pool = g_new0 (PGDBConnPool, 1); pool->host = g_strdup (host); + pool->port = port; pool->user = g_strdup (user); pool->password = g_strdup (password); pool->db_name = g_strdup(db_name); @@ -88,6 +91,10 @@ connect_pgsql (PGDBConnPool *pool, GError **error) g_string_append_printf (buf, "host='%s' ", pool->host); } + if (pool->port > 0) { + g_string_append_printf (buf, "port=%u ", pool->port); + } + g_string_append_printf (buf, "dbname='%s' ", pool->db_name); db = PQconnectdb (buf->str); diff --git a/net/common/db-wrapper/pgsql-db-ops.h b/net/common/db-wrapper/pgsql-db-ops.h index c8e884e..f027aec 100644 --- a/net/common/db-wrapper/pgsql-db-ops.h +++ b/net/common/db-wrapper/pgsql-db-ops.h @@ -3,6 +3,7 @@ DBConnPool * pgsql_db_conn_pool_new (const char *host, + unsigned int port, const char *user, const char *password, const char *db_name, diff --git a/net/server/server-session.c b/net/server/server-session.c index be5b870..6974397 100644 --- a/net/server/server-session.c +++ b/net/server/server-session.c @@ -197,6 +197,7 @@ static int init_mysql_database (CcnetSession *session) static int init_pgsql_database (CcnetSession *session) { char *host, *user, *passwd, *db, *unix_socket; + unsigned int port; host = ccnet_key_file_get_string (session->keyf, "Database", "HOST"); user = ccnet_key_file_get_string (session->keyf, "Database", "USER"); @@ -219,10 +220,17 @@ static int init_pgsql_database (CcnetSession *session) g_warning ("DB name not set in config.\n"); return -1; } + + GError *error = NULL; + port = g_key_file_get_integer (session->keyf, "Database", "PORT", &error); + if (error) { + port = 0; + g_clear_error (&error); + } unix_socket = ccnet_key_file_get_string (session->keyf, "Database", "UNIX_SOCKET"); - session->db = ccnet_db_new_pgsql (host, user, passwd, db, unix_socket, + session->db = ccnet_db_new_pgsql (host, port, user, passwd, db, unix_socket, DEFAULT_MAX_CONNECTIONS); if (!session->db) { g_warning ("Failed to open database.\n");