mirror of
https://github.com/psycopg/psycopg2.git
synced 2025-02-07 12:50:32 +03:00
Close the connection if discovered bad on poll()
This commit is contained in:
parent
1654687d1b
commit
489658cfc5
1
NEWS
1
NEWS
|
@ -29,6 +29,7 @@ What's new in psycopg 2.5.3
|
||||||
the superclass init (:ticket:`#195`).
|
the superclass init (:ticket:`#195`).
|
||||||
- Mark the connection closed when a Socket connection is broken, as it
|
- Mark the connection closed when a Socket connection is broken, as it
|
||||||
happens for TCP connections instead (:ticket:`#196`).
|
happens for TCP connections instead (:ticket:`#196`).
|
||||||
|
- Mark the connection closed if found broken on `poll()`.
|
||||||
- Fixed possible segfault in named cursors creation.
|
- Fixed possible segfault in named cursors creation.
|
||||||
- It is now possible to call `get_transaction_status()` on closed connections.
|
- It is now possible to call `get_transaction_status()` on closed connections.
|
||||||
- Fixed debug build on Windows, thanks to James Emerton.
|
- Fixed debug build on Windows, thanks to James Emerton.
|
||||||
|
|
|
@ -807,6 +807,12 @@ pq_is_busy(connectionObject *conn)
|
||||||
Dprintf("pq_is_busy: PQconsumeInput() failed");
|
Dprintf("pq_is_busy: PQconsumeInput() failed");
|
||||||
pthread_mutex_unlock(&(conn->lock));
|
pthread_mutex_unlock(&(conn->lock));
|
||||||
Py_BLOCK_THREADS;
|
Py_BLOCK_THREADS;
|
||||||
|
|
||||||
|
/* if the libpq says pgconn is lost, close the py conn */
|
||||||
|
if (CONNECTION_BAD == PQstatus(conn->pgconn)) {
|
||||||
|
conn->closed = 2;
|
||||||
|
}
|
||||||
|
|
||||||
PyErr_SetString(OperationalError, PQerrorMessage(conn->pgconn));
|
PyErr_SetString(OperationalError, PQerrorMessage(conn->pgconn));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -836,6 +842,12 @@ pq_is_busy_locked(connectionObject *conn)
|
||||||
|
|
||||||
if (PQconsumeInput(conn->pgconn) == 0) {
|
if (PQconsumeInput(conn->pgconn) == 0) {
|
||||||
Dprintf("pq_is_busy_locked: PQconsumeInput() failed");
|
Dprintf("pq_is_busy_locked: PQconsumeInput() failed");
|
||||||
|
|
||||||
|
/* if the libpq says pgconn is lost, close the py conn */
|
||||||
|
if (CONNECTION_BAD == PQstatus(conn->pgconn)) {
|
||||||
|
conn->closed = 2;
|
||||||
|
}
|
||||||
|
|
||||||
PyErr_SetString(OperationalError, PQerrorMessage(conn->pgconn));
|
PyErr_SetString(OperationalError, PQerrorMessage(conn->pgconn));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user