X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fsrc%2Flookups%2Fpgsql.c;h=b5f60938e7946dba99b20504f80c01c216d32155;hb=19ae9a55a69e9ea19916eabe3879b786725de92a;hp=cc12e40d7a0d4d1dd8cdd99bec2469fcfbf6d93f;hpb=db3f7b6972f3b003c0413b78afcfbe295ffe0b97;p=user%2Fhenk%2Fcode%2Fexim.git diff --git a/src/src/lookups/pgsql.c b/src/src/lookups/pgsql.c index cc12e40d7..b5f60938e 100644 --- a/src/src/lookups/pgsql.c +++ b/src/src/lookups/pgsql.c @@ -53,7 +53,7 @@ pgsql_connection *cn; 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); } } @@ -77,7 +77,7 @@ static void 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); } @@ -128,6 +128,7 @@ gstring * result = NULL; int yield = DEFER; unsigned int num_fields, num_tuples; pgsql_connection *cn; +rmark reset_point = store_mark(); uschar *server_copy = NULL; uschar *sdata[3]; @@ -181,7 +182,7 @@ if (!cn) 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 @@ -221,7 +222,7 @@ if (!cn) 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]); } @@ -238,7 +239,7 @@ if (!cn) 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); @@ -259,7 +260,7 @@ if (!cn) /* 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; @@ -270,7 +271,7 @@ if (!cn) 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); } @@ -288,7 +289,7 @@ switch(PQresultStatus(pg_result)) 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; @@ -356,13 +357,13 @@ if (pg_result) PQclear(pg_result); 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 */ } } @@ -427,7 +428,7 @@ while ((c = *t++) != 0) 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) {