From: | "Dave Page" <dpage(at)vale-housing(dot)co(dot)uk> |
---|---|
To: | <tame_doggie(at)yahoo(dot)com>, <pgsql-odbc(at)postgresql(dot)org> |
Subject: | Re: app crashes if lost connection during query, seems to be a bug. |
Date: | 2005-10-07 22:13:11 |
Message-ID: | 028c01c5cb8c$53077ec2$6a01a8c0@valehousing.co.uk |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-odbc |
The SOCK_* code is all gone in the current code which uses libpq instead. I have actually tested the server shutdown case and the driver handled it as it should.
Regards, Dave
-----Original Message-----
From: "doggie tame"<tame_doggie(at)yahoo(dot)com>
Sent: 07/10/05 22:32:19
To: "pgsql-odbc(at)postgresql(dot)org"<pgsql-odbc(at)postgresql(dot)org>
Subject: [ODBC] app crashes if lost connection during query, seems to be a bug.
hi, there
application crashes if lost connection during query
(such as server is shuted down in immediate mode).
it's due to that after connection closed, the socket
flush funciton, SOCK_flush_output, is still trying to
write/flush to the non-exist socket, during the socket
destruction stage.
the socket should be marked as "CLOSED" when
connection is lost, such as, in socket.c
UCHAR
SOCK_get_next_byte(SocketClass *self)
{
.......
if (self->buffer_filled_in == 0)
{
self->errornumber = SOCKET_CLOSED;
self->errormsg = "Socket has been
closed.";
self->buffer_filled_in = 0;
self->socket=-1; //@mark the socket
"CLOSED"!
return 0;
}
}
return self->buffer_in[self->buffer_read_in++];
}
__________________________________
Yahoo! Mail - PC Magazine Editors' Choice 2005
http://mail.yahoo.com
---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?
http://www.postgresql.org/docs/faq
-----Unmodified Original Message-----
hi, there
application crashes if lost connection during query
(such as server is shuted down in immediate mode).
it's due to that after connection closed, the socket
flush funciton, SOCK_flush_output, is still trying to
write/flush to the non-exist socket, during the socket
destruction stage.
the socket should be marked as "CLOSED" when
connection is lost, such as, in socket.c
UCHAR
SOCK_get_next_byte(SocketClass *self)
{
......
if (self->buffer_filled_in == 0)
{
self->errornumber = SOCKET_CLOSED;
self->errormsg = "Socket has been
closed.";
self->buffer_filled_in = 0;
self->socket=-1; //@mark the socket
"CLOSED"!
return 0;
}
}
return self->buffer_in[self->buffer_read_in++];
}
__________________________________
Yahoo! Mail - PC Magazine Editors' Choice 2005
http://mail.yahoo.com
---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?
From | Date | Subject | |
---|---|---|---|
Next Message | Marten Feldtmann | 2005-10-09 11:04:21 | Windows, ODBC drivers and strange points ... |
Previous Message | doggie tame | 2005-10-07 21:26:19 | app crashes if lost connection during query, seems to be a bug. |