# $Id: mutt-interrupt_socket.diff,v 1.1 2010/01/17 20:30:04 jcs Exp $ # # allow hung socket operations to be interrupted with control+c. useful for # making mutt not wait forever after coming out of suspend. # # by joshua stein # --- mutt_socket.c.orig Sun Jan 4 15:58:28 2009 +++ mutt_socket.c Tue Sep 1 09:31:48 2009 @@ -77,8 +77,11 @@ if (conn->fd < 0) dprint (1, (debugfile, "mutt_socket_close: Attempt to close closed connection.\n")); - else + else { + mutt_allow_interrupt (1); rc = conn->conn_close (conn); + mutt_allow_interrupt (0); + } conn->fd = -1; conn->ssf = 0; @@ -96,7 +99,10 @@ return -1; } + mutt_allow_interrupt (1); rc = conn->conn_read (conn, buf, len); + mutt_allow_interrupt (0); + /* EOF */ if (rc == 0) { @@ -127,8 +133,10 @@ while (sent < len) { + mutt_allow_interrupt (1); if ((rc = conn->conn_write (conn, buf + sent, len - sent)) < 0) { + mutt_allow_interrupt (0); dprint (1, (debugfile, "mutt_socket_write: error writing (%s), closing socket\n", strerror(errno))); @@ -136,6 +144,7 @@ return -1; } + mutt_allow_interrupt (0); if (rc < len - sent) dprint (3, (debugfile, @@ -169,7 +178,11 @@ if (conn->bufpos >= conn->available) { if (conn->fd >= 0) + { + mutt_allow_interrupt (1); conn->available = conn->conn_read (conn, conn->inbuf, sizeof (conn->inbuf)); + mutt_allow_interrupt (0); + } else { dprint (1, (debugfile, "mutt_socket_readchar: attempt to read from closed connection.\n"));