@@ -139,21 +139,18 @@ } else if (ret < 0) { dprintf("We got some kind of I/O error"); if (tclErrno == EAGAIN) { dprintf("It's EAGAIN"); - ret = 0; } else { dprintf("It's an unepxected error: %s/%i", Tcl_ErrnoMsg(tclErrno), tclErrno); - Tcl_SetErrno(ECONNRESET); - ret = -1; } } else { dprintf("Successfully wrote some data"); } - if (ret != -1) { + if (ret != -1 || (ret == -1 && tclErrno == EAGAIN)) { if (BIO_should_read(bio)) { dprintf("Setting should retry read flag"); BIO_set_retry_read(bio); } @@ -195,21 +192,18 @@ } else if (ret < 0) { dprintf("We got some kind of I/O error"); if (tclErrno == EAGAIN) { dprintf("It's EAGAIN"); - ret = 0; } else { dprintf("It's an unepxected error: %s/%i", Tcl_ErrnoMsg(tclErrno), tclErrno); - Tcl_SetErrno(ECONNRESET); - ret = -1; } } else { dprintf("Successfully read some data"); } - if (ret != -1) { + if (ret != -1 || (ret == -1 && tclErrno == EAGAIN)) { if (BIO_should_write(bio)) { dprintf("Setting should retry write flag"); BIO_set_retry_write(bio); }