Re: app crashes if lost connection during query, seems to be a bug.
От | Dave Page |
---|---|
Тема | Re: app crashes if lost connection during query, seems to be a bug. |
Дата | |
Msg-id | 028c01c5cb8c$53077ec2$6a01a8c0@valehousing.co.uk обсуждение исходный текст |
Ответ на | app crashes if lost connection during query, seems to be a bug. (doggie tame <tame_doggie@yahoo.com>) |
Список | pgsql-odbc |
The SOCK_* code is all gone in the current code which uses libpq instead. I have actually tested the server shutdown caseand the driver handled it as it should. Regards, Dave -----Original Message----- From: "doggie tame"<tame_doggie@yahoo.com> Sent: 07/10/05 22:32:19 To: "pgsql-odbc@postgresql.org"<pgsql-odbc@postgresql.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? http://www.postgresql.org/docs/faq
В списке pgsql-odbc по дате отправления: