--- src/lowlevel/kbd.c.orig Mon Mar 18 22:03:13 2002 +++ src/lowlevel/kbd.c Fri Mar 22 16:32:53 2002 @@ -77,7 +77,11 @@ { int w = 0; if (!len) return; - if (!itrm->eqlen && can_write(itrm->sock_out) && (w = write(itrm->sock_out, data, len)) <= 0) { + if (!itrm->eqlen + && can_write(itrm->sock_out) + && (w = write(itrm->sock_out, data, len)) <= 0 + && (len > PIPE_BUF || errno != EAGAIN || (w = 0) ) + ) { /*free_trm(itrm);*/ register_bottom_half((void (*)(void *))free_trm, itrm); return;