diff --git a/src/pgsql.c b/src/pgsql.c index caba1be..9805517 100644 --- a/src/pgsql.c +++ b/src/pgsql.c @@ -147,8 +147,10 @@ kore_pgsql_continue(struct http_request *req, struct kore_pgsql *pgsql) pgsql->error = NULL; } - if (pgsql->result) + if (pgsql->result) { PQclear(pgsql->result); + pgsql->result = NULL; + } switch (pgsql->state) { case KORE_PGSQL_STATE_INIT: @@ -246,6 +248,10 @@ pgsql_conn_release(struct kore_pgsql *pgsql) kore_mem_free(pgsql->conn->job->query); kore_mem_free(pgsql->conn->job); + /* Drain just in case. */ + while (PQgetResult(pgsql->conn->db) != NULL) + ; + pgsql->conn->job = NULL; pgsql->conn->flags |= PGSQL_CONN_FREE; TAILQ_INSERT_TAIL(&pgsql_conn_free, pgsql->conn, list);