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 по дате отправления:

Предыдущее
От: doggie tame
Дата:
Сообщение: app crashes if lost connection during query, seems to be a bug.
Следующее
От: Marten Feldtmann
Дата:
Сообщение: Windows, ODBC drivers and strange points ...