Module: kamailio
Branch: master
Commit: 861205b8aeed19fe8693e21fe5f1856f1dcb08c5
URL: 
https://github.com/kamailio/kamailio/commit/861205b8aeed19fe8693e21fe5f1856f1dcb08c5

Author: Daniel-Constantin Mierla <[email protected]>
Committer: Daniel-Constantin Mierla <[email protected]>
Date: 2018-10-12T02:09:21+02:00

db_postgres: new parameter bytea_output_escape

- control escaping output for bytea fields
- default 1 (do the escape)

---

Modified: src/modules/db_postgres/km_pg_con.c
Modified: src/modules/db_postgres/pg_mod.c

---

Diff:  
https://github.com/kamailio/kamailio/commit/861205b8aeed19fe8693e21fe5f1856f1dcb08c5.diff
Patch: 
https://github.com/kamailio/kamailio/commit/861205b8aeed19fe8693e21fe5f1856f1dcb08c5.patch

---

diff --git a/src/modules/db_postgres/km_pg_con.c 
b/src/modules/db_postgres/km_pg_con.c
index b66a94a0fb..f6a2b8c8e0 100644
--- a/src/modules/db_postgres/km_pg_con.c
+++ b/src/modules/db_postgres/km_pg_con.c
@@ -37,6 +37,8 @@
 #include <netinet/tcp.h>
 
 
+extern int pg_bytea_output_escape;
+
 /*!
  * \brief Create a new connection
  *
@@ -52,7 +54,7 @@ struct pg_con *db_postgres_new_connection(struct db_id *id)
        int i = 0;
        const char *keywords[10], *values[10];
        char to[16];
-       PGresult   *res;
+       PGresult *res = NULL;
 
        LM_DBG("db_id = %p\n", id);
 
@@ -142,15 +144,16 @@ struct pg_con *db_postgres_new_connection(struct db_id 
*id)
        }
 #endif
 
-       res = PQexec(ptr->con, "SET bytea_output=escape");
-       if (PQresultStatus(res) != PGRES_COMMAND_OK)
-       {
-               LM_ERR("cannot set blob output escaping format\n");
+       if(pg_bytea_output_escape!=0) {
+               res = PQexec(ptr->con, "SET bytea_output=escape");
+               if (PQresultStatus(res) != PGRES_COMMAND_OK)
+               {
+                       LM_ERR("cannot set blob output escaping format\n");
+                       PQclear(res);
+                       goto err;
+               }
                PQclear(res);
-               goto err;
        }
-       PQclear(res);
-
        return ptr;
 
 err:
diff --git a/src/modules/db_postgres/pg_mod.c b/src/modules/db_postgres/pg_mod.c
index 070fc66a49..7ebee934c4 100644
--- a/src/modules/db_postgres/pg_mod.c
+++ b/src/modules/db_postgres/pg_mod.c
@@ -58,6 +58,7 @@ int pg_retries =
 int pg_lockset = 4;
 int pg_timeout = 0; /* default = no timeout */
 int pg_keepalive = 0;
+int pg_bytea_output_escape = 1;
 
 /*
  * Postgres module interface
@@ -91,6 +92,7 @@ static param_export_t params[] = {
        {"lockset", PARAM_INT, &pg_lockset},
        {"timeout", PARAM_INT, &pg_timeout},
        {"tcp_keepalive", PARAM_INT, &pg_keepalive},
+       {"bytea_output_escape", PARAM_INT, &pg_bytea_output_escape},
        {0, 0, 0}
 };
 


_______________________________________________
Kamailio (SER) - Development Mailing List
[email protected]
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to