aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/interfaces/libpgtcl/pgtclCmds.c7
-rw-r--r--src/interfaces/libpgtcl/pgtclId.c26
-rw-r--r--src/interfaces/libpgtcl/pgtclId.h4
3 files changed, 11 insertions, 26 deletions
diff --git a/src/interfaces/libpgtcl/pgtclCmds.c b/src/interfaces/libpgtcl/pgtclCmds.c
index 4b047b1b6e5..0cb46686dc1 100644
--- a/src/interfaces/libpgtcl/pgtclCmds.c
+++ b/src/interfaces/libpgtcl/pgtclCmds.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtclCmds.c,v 1.63 2002/08/17 12:19:31 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtclCmds.c,v 1.64 2002/08/18 01:39:43 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -419,11 +419,8 @@ Pg_disconnect(ClientData cData, Tcl_Interp *interp, int argc, char *argv[])
#if TCL_MAJOR_VERSION >= 8
conn = PgGetConnectionId(interp, argv[1], &connid);
- if (connid->notifier_channel != NULL) {
- /* stop listening for NOTIFY events on that channel */
- PgStopNotifyEventSource(connid,1);
+ if (connid->notifier_channel != NULL)
Tcl_UnregisterChannel(interp, connid->notifier_channel);
- }
#endif
return Tcl_UnregisterChannel(interp, conn_chan);
diff --git a/src/interfaces/libpgtcl/pgtclId.c b/src/interfaces/libpgtcl/pgtclId.c
index d5474ce61c9..3a3bee63fd8 100644
--- a/src/interfaces/libpgtcl/pgtclId.c
+++ b/src/interfaces/libpgtcl/pgtclId.c
@@ -13,7 +13,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtclId.c,v 1.31 2002/08/17 12:19:31 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/interfaces/libpgtcl/Attic/pgtclId.c,v 1.32 2002/08/18 01:39:43 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -277,7 +277,7 @@ PgDelConnectionId(DRIVER_DEL_PROTO)
* Turn off the Tcl event source for this connection, and delete any
* pending notify events.
*/
- PgStopNotifyEventSource(connid,1);
+ PgStopNotifyEventSource(connid);
/* Close the libpq connection too */
PQfinish(connid->conn);
@@ -441,7 +441,7 @@ PgGetConnByResultId(Tcl_Interp *interp, char *resid_c)
*mark = '.';
if (conn_chan && Tcl_GetChannelType(conn_chan) == &Pg_ConnType)
{
- Tcl_SetResult(interp, (char *)Tcl_GetChannelName(conn_chan), TCL_VOLATILE);
+ Tcl_SetResult(interp, Tcl_GetChannelName(conn_chan), TCL_VOLATILE);
return TCL_OK;
}
@@ -611,9 +611,7 @@ PgNotifyTransferEvents(Pg_ConnectionId * connid)
* closed socket descriptor.
*/
if (PQsocket(connid->conn) < 0)
- /* do not remove any pending events, so that the virtual notification
- connection_closed will be processed */
- PgStopNotifyEventSource(connid,0);
+ PgStopNotifyEventSource(connid);
}
/*
@@ -677,17 +675,7 @@ Pg_Notify_FileHandler(ClientData clientData, int mask)
* it internally to libpq; but it will clear the read-ready
* condition).
*/
- if (!PQconsumeInput(connid->conn)) {
- NotifyEvent *event = (NotifyEvent *) ckalloc(sizeof(NotifyEvent));
-
- PGnotify *closed = (PGnotify *) ckalloc(sizeof(PGnotify));
- strcpy(closed->relname,"connection_closed");
- event->header.proc = Pg_Notify_EventProc;
- event->info= *closed;
- event->connid = connid;
- Tcl_QueueEvent((Tcl_Event *) event, TCL_QUEUE_TAIL);
- ckfree((void *)closed);
- }
+ PQconsumeInput(connid->conn);
/* Transfer notify events from libpq to Tcl event queue. */
PgNotifyTransferEvents(connid);
@@ -736,7 +724,7 @@ PgStartNotifyEventSource(Pg_ConnectionId * connid)
}
void
-PgStopNotifyEventSource(Pg_ConnectionId * connid, int remove_pending)
+PgStopNotifyEventSource(Pg_ConnectionId * connid)
{
/* Remove the event source */
if (connid->notifier_running)
@@ -755,5 +743,5 @@ PgStopNotifyEventSource(Pg_ConnectionId * connid, int remove_pending)
}
/* Kill any queued Tcl events that reference this channel */
- if (remove_pending) Tcl_DeleteEvents(NotifyEventDeleteProc, (ClientData) connid);
+ Tcl_DeleteEvents(NotifyEventDeleteProc, (ClientData) connid);
}
diff --git a/src/interfaces/libpgtcl/pgtclId.h b/src/interfaces/libpgtcl/pgtclId.h
index 6a918e41f8c..ac99b9c6e00 100644
--- a/src/interfaces/libpgtcl/pgtclId.h
+++ b/src/interfaces/libpgtcl/pgtclId.h
@@ -10,7 +10,7 @@
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: pgtclId.h,v 1.19 2002/08/17 12:19:31 momjian Exp $
+ * $Id: pgtclId.h,v 1.20 2002/08/18 01:39:43 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -44,7 +44,7 @@ extern PGresult *PgGetResultId(Tcl_Interp *interp, char *id);
extern void PgDelResultId(Tcl_Interp *interp, char *id);
extern int PgGetConnByResultId(Tcl_Interp *interp, char *resid);
extern void PgStartNotifyEventSource(Pg_ConnectionId * connid);
-extern void PgStopNotifyEventSource(Pg_ConnectionId * connid, int remove_pend);
+extern void PgStopNotifyEventSource(Pg_ConnectionId * connid);
extern void PgNotifyTransferEvents(Pg_ConnectionId * connid);
extern void PgNotifyInterpDelete(ClientData clientData, Tcl_Interp *interp);