--- src/gnutls.c~ 2012-02-13 15:46:01.000000000 -0500 +++ src/gnutls.c 2012-02-23 14:21:22.000000000 -0500 @@ -378,6 +378,8 @@ return (bytes_written); } +static int error_count = 0; + EMACS_INT emacs_gnutls_read (struct Lisp_Process *proc, char *buf, EMACS_INT nbyte) { @@ -386,8 +388,17 @@ if (proc->gnutls_initstage != GNUTLS_STAGE_READY) { + if (error_count < 100) + { + error_count++; emacs_gnutls_handshake (proc); return -1; + } + else + { + error_count = 0; + return 0; + } } rtnval = fn_gnutls_record_recv (state, buf, nbyte); if (rtnval >= 0)