0d28512bce
- fix possible crash when opening IMAP mailbox
59 lines
1.6 KiB
Diff
59 lines
1.6 KiB
Diff
diff -up mutt-1.5.18/mutt_socket.c.intr mutt-1.5.18/mutt_socket.c
|
|
--- mutt-1.5.18/mutt_socket.c.intr 2008-01-28 03:20:23.000000000 +0100
|
|
+++ mutt-1.5.18/mutt_socket.c 2008-05-22 16:49:04.000000000 +0200
|
|
@@ -75,10 +75,12 @@ int mutt_socket_close (CONNECTION* conn)
|
|
{
|
|
int rc = -1;
|
|
|
|
+ mutt_allow_interrupt (1);
|
|
if (conn->fd < 0)
|
|
dprint (1, (debugfile, "mutt_socket_close: Attempt to close closed connection.\n"));
|
|
else
|
|
rc = conn->conn_close (conn);
|
|
+ mutt_allow_interrupt (0);
|
|
|
|
conn->fd = -1;
|
|
conn->ssf = 0;
|
|
@@ -96,7 +98,9 @@ int mutt_socket_read (CONNECTION* conn,
|
|
return -1;
|
|
}
|
|
|
|
+ mutt_allow_interrupt (1);
|
|
rc = conn->conn_read (conn, buf, len);
|
|
+ mutt_allow_interrupt (0);
|
|
/* EOF */
|
|
if (rc == 0)
|
|
{
|
|
@@ -123,14 +127,17 @@ int mutt_socket_write_d (CONNECTION *con
|
|
|
|
if (len < 0)
|
|
len = mutt_strlen (buf);
|
|
+ mutt_allow_interrupt (1);
|
|
if ((rc = conn->conn_write (conn, buf, len)) < 0)
|
|
{
|
|
+ mutt_allow_interrupt (0);
|
|
dprint (1, (debugfile,
|
|
"mutt_socket_write: error writing, closing socket\n"));
|
|
mutt_socket_close (conn);
|
|
|
|
return -1;
|
|
}
|
|
+ mutt_allow_interrupt (0);
|
|
|
|
if (rc < len)
|
|
{
|
|
@@ -161,9 +168,11 @@ int mutt_socket_readchar (CONNECTION *co
|
|
{
|
|
if (conn->bufpos >= conn->available)
|
|
{
|
|
- if (conn->fd >= 0)
|
|
+ if (conn->fd >= 0) {
|
|
+ mutt_allow_interrupt (1);
|
|
conn->available = conn->conn_read (conn, conn->inbuf, sizeof (conn->inbuf));
|
|
- else
|
|
+ mutt_allow_interrupt (0);
|
|
+ } else
|
|
{
|
|
dprint (1, (debugfile, "mutt_socket_readchar: attempt to read from closed connection.\n"));
|
|
return -1;
|