while ((cn = pgsql_connections) != NULL)
{
pgsql_connections = cn->next;
- DEBUG(D_lookup) debug_printf("close PGSQL connection: %s\n", cn->server);
+ DEBUG(D_lookup) debug_printf_indent("close PGSQL connection: %s\n", cn->server);
PQfinish(cn->handle);
}
}
notice_processor(void *arg, const char *message)
{
arg = arg; /* Keep compiler happy */
-DEBUG(D_lookup) debug_printf("PGSQL: %s\n", message);
+DEBUG(D_lookup) debug_printf_indent("PGSQL: %s\n", message);
}
int yield = DEFER;
unsigned int num_fields, num_tuples;
pgsql_connection *cn;
+rmark reset_point = store_mark();
uschar *server_copy = NULL;
uschar *sdata[3];
last_slash = Ustrrchr(server, '/');
last_dot = Ustrrchr(server, '.');
- DEBUG(D_lookup) debug_printf("PGSQL new connection: socket=%s "
+ DEBUG(D_lookup) debug_printf_indent("PGSQL new connection: socket=%s "
"database=%s user=%s\n", server, sdata[0], sdata[1]);
/* A valid socket name looks like this: /var/run/postgresql/.s.PGSQL.5432
return DEFER;
}
- DEBUG(D_lookup) debug_printf("PGSQL new connection: host=%s port=%s "
+ DEBUG(D_lookup) debug_printf_indent("PGSQL new connection: host=%s port=%s "
"database=%s user=%s\n", server, port, sdata[0], sdata[1]);
}
if(PQstatus(pg_conn) == CONNECTION_BAD)
{
- store_reset(server_copy);
+ reset_point = store_reset(reset_point);
*errmsg = string_sprintf("PGSQL connection failed: %s",
PQerrorMessage(pg_conn));
PQfinish(pg_conn);
/* Add the connection to the cache */
- cn = store_get(sizeof(pgsql_connection));
+ cn = store_get(sizeof(pgsql_connection), FALSE);
cn->server = server_copy;
cn->handle = pg_conn;
cn->next = pgsql_connections;
else
{
- DEBUG(D_lookup) debug_printf("PGSQL using cached connection for %s\n",
+ DEBUG(D_lookup) debug_printf_indent("PGSQL using cached connection for %s\n",
server_copy);
}
result = string_cat(result, US PQcmdTuples(pg_result));
*do_cache = 0;
- DEBUG(D_lookup) debug_printf("PGSQL: command does not return any data "
+ DEBUG(D_lookup) debug_printf_indent("PGSQL: command does not return any data "
"but was successful. Rows affected: %s\n", string_from_gstring(result));
break;
if (result)
{
- store_reset(result->s + result->ptr + 1);
+ gstring_release_unused(result);
*resultptr = string_from_gstring(result);
return OK;
}
else
{
- DEBUG(D_lookup) debug_printf("%s\n", *errmsg);
+ DEBUG(D_lookup) debug_printf_indent("%s\n", *errmsg);
return yield; /* FAIL or DEFER */
}
}
if (Ustrchr("\n\t\r\b\'\"\\", c) != NULL) count++;
if (count == 0) return s;
-t = quoted = store_get(Ustrlen(s) + count + 1);
+t = quoted = store_get(Ustrlen(s) + count + 1, is_tainted(s));
while ((c = *s++) != 0)
{