diff --git a/lib/modules/Sql.pmod/pgsql.pike b/lib/modules/Sql.pmod/pgsql.pike index 830b50728861054cde6d23a29cf877b82caec211..fd5071f32d3c1e6bfcf3b28f401476b83c32a44a 100644 --- a/lib/modules/Sql.pmod/pgsql.pike +++ b/lib/modules/Sql.pmod/pgsql.pike @@ -302,10 +302,6 @@ protected void create(void|string host, void|string database, ? !!reconnected : -1; } -private .pgsql_util.conxion getsocket(void|int nossl) { - return .pgsql_util.conxion(this,qportals,(int)nossl); -} - //! Cancels all currently running queries in this session. //! //! @seealso @@ -316,7 +312,7 @@ private .pgsql_util.conxion getsocket(void|int nossl) { //! through the generic SQL-interface. /*semi*/final void cancelquery() { PD("CancelRequest\n"); - .pgsql_util.conxion lcon=getsocket(2); + .pgsql_util.conxion lcon = .pgsql_util.conxion(this, 0, 2); lcon->add_int32(16)->add_int32(PG_PROTOCOL(1234,5678)) ->add_int32(backendpid)->add(cancelsecret)->sendcmd(FLUSHSEND); destruct(lcon); // Destruct explicitly to avoid delayed close @@ -1340,7 +1336,7 @@ private int reconnect() { _readyforquerycount=1; _waittocommit=0; qportals->write(1); - if(!(c=getsocket())) + if (!(c = .pgsql_util.conxion(this, qportals, 0))) ERROR("Couldn't connect to database on %s:%d\n",_host,_port); _runtimeparameter=([]); _unnamedportalmux=Thread.Mutex(); diff --git a/lib/modules/Sql.pmod/pgsql_util.pmod b/lib/modules/Sql.pmod/pgsql_util.pmod index f7c98d650d15e86d694b7ba18f6a8983ef1f6583..b51d3cbf41139e1009ac679e3206596ce7ec148c 100644 --- a/lib/modules/Sql.pmod/pgsql_util.pmod +++ b/lib/modules/Sql.pmod/pgsql_util.pmod @@ -425,9 +425,10 @@ outer: protected void destroy() { PD("%d>Close conxion %d\n", socket ? socket->query_fd() : -1, !!nostash); int|.pgsql_util.sql_result portal; - while (portal = qportals->try_read()) - if (objectp(portal)) - portal->_purgeportal(); + if (qportals) // CancelRequest does not use qportals + while (portal = qportals->try_read()) + if (objectp(portal)) + portal->_purgeportal(); if(nostash) { catch { while(sizeof(closecallbacks)) @@ -504,7 +505,7 @@ outer: "queued portals: %d output queue: %d/%d\n" "started: %d\n", fd,sizeof(i),i->_size_object(), - qportals->size(),sizeof(this),_size_object(), + qportals && qportals->size(), sizeof(this), _size_object(), !!started); break; }