diff --git a/nchan.c b/nchan.c
index 3f996f5..6871cd8 100644
--- a/nchan.c
+++ b/nchan.c
@@ -30,10 +30,35 @@
 #include "buffer.h"
 #include "packet.h"
 #include "channels.h"
-#include "nchan.h"
 #include "compat.h"
 #include "log.h"
 
+/*
+ * SSH Protocol 1.5 aka New Channel Protocol
+ * Thanks to Martina, Axel and everyone who left Erlangen, leaving me bored.
+ * Written by Markus Friedl in October 1999
+ *
+ * Protocol versions 1.3 and 1.5 differ in the handshake protocol used for the
+ * tear down of channels:
+ *
+ * 1.3:	strict request-ack-protocol:
+ * 	CLOSE	->
+ * 		<-  CLOSE_CONFIRM
+ *
+ * 1.5:	uses variations of:
+ * 	IEOF	->
+ * 		<-  OCLOSE
+ * 		<-  IEOF
+ * 	OCLOSE	->
+ * 	i.e. both sides have to close the channel
+ *
+ * 2.0: the EOF messages are optional
+ *
+ * See the debugging output from 'ssh -v' and 'sshd -d' of
+ * ssh-1.2.27 as an example.
+ *
+ */
+ 
 /* functions manipulating channel states */
 /*
  * EVENTS update channel input/output states execute ACTIONS
@@ -84,7 +109,7 @@
 		c->istate = CHAN_INPUT_CLOSED;
 		break;
 	default:
-		error("channel %d: protocol error: chan_rcvd_oclose for istate %d",
+		error("channel %d: protocol error: rcvd_oclose for istate %d",
 		    c->self, c->istate);
 		return;
 	}
@@ -98,13 +123,15 @@
 		debug("channel %d: input open -> drain", c->self);
 		chan_shutdown_read(c);
 		c->istate = CHAN_INPUT_WAIT_DRAIN;
+#if 0
 		if (buffer_len(&c->input) == 0) {
 			debug("channel %d: input: no drain shortcut", c->self);
 			chan_ibuf_empty(c);
 		}
+#endif
 		break;
 	default:
-		error("channel %d: internal error: we do not read, but chan_read_failed for istate %d",
+		error("channel %d: chan_read_failed for istate %d",
 		    c->self, c->istate);
 		break;
 	}
@@ -114,7 +141,7 @@
 {
 	debug("channel %d: ibuf empty", c->self);
 	if (buffer_len(&c->input)) {
-		error("channel %d: internal error: chan_ibuf_empty for non empty buffer",
+		error("channel %d: chan_ibuf_empty for non empty buffer",
 		    c->self);
 		return;
 	}
@@ -125,7 +152,7 @@
 		c->istate = CHAN_INPUT_WAIT_OCLOSE;
 		break;
 	default:
-		error("channel %d: internal error: chan_ibuf_empty for istate %d",
+		error("channel %d: chan_ibuf_empty for istate %d",
 		    c->self, c->istate);
 		break;
 	}
@@ -137,19 +164,23 @@
 	if (c->type != SSH_CHANNEL_OPEN) {
 		debug("channel %d: non-open", c->self);
 		if (c->istate == CHAN_INPUT_OPEN) {
-			debug("channel %d: non-open: input open -> wait_oclose", c->self);
+			debug("channel %d: non-open: input open -> wait_oclose",
+			    c->self);
 			chan_shutdown_read(c);
 			chan_send_ieof1(c);
 			c->istate = CHAN_INPUT_WAIT_OCLOSE;
 		} else {
-			error("channel %d: istate %d != open", c->self, c->istate);
+			error("channel %d: non-open: istate %d != open",
+			    c->self, c->istate);
 		}
 		if (c->ostate == CHAN_OUTPUT_OPEN) {
-			debug("channel %d: non-open: output open -> closed", c->self);
+			debug("channel %d: non-open: output open -> closed",
+			    c->self);
 			chan_send_oclose1(c);
 			c->ostate = CHAN_OUTPUT_CLOSED;
 		} else {
-			error("channel %d: ostate %d != open", c->self, c->ostate);
+			error("channel %d: non-open: ostate %d != open",
+			    c->self, c->ostate);
 		}
 		return;
 	}
@@ -163,7 +194,7 @@
 		c->ostate = CHAN_OUTPUT_CLOSED;
 		break;
 	default:
-		error("channel %d: protocol error: chan_rcvd_ieof for ostate %d",
+		error("channel %d: protocol error: rcvd_ieof for ostate %d",
 		    c->self, c->ostate);
 		break;
 	}
@@ -184,7 +215,7 @@
 		c->ostate = CHAN_OUTPUT_CLOSED;
 		break;
 	default:
-		error("channel %d: internal error: chan_write_failed for ostate %d",
+		error("channel %d: chan_write_failed for ostate %d",
 		    c->self, c->ostate);
 		break;
 	}
@@ -194,7 +225,7 @@
 {
 	debug("channel %d: obuf empty", c->self);
 	if (buffer_len(&c->output)) {
-		error("channel %d: internal error: chan_obuf_empty for non empty buffer",
+		error("channel %d: chan_obuf_empty for non empty buffer",
 		    c->self);
 		return;
 	}
@@ -205,7 +236,7 @@
 		c->ostate = CHAN_OUTPUT_CLOSED;
 		break;
 	default:
-		error("channel %d: internal error: chan_obuf_empty for ostate %d",
+		error("channel %d: internal error: obuf_empty for ostate %d",
 		    c->self, c->ostate);
 		break;
 	}
@@ -222,7 +253,7 @@
 		packet_send();
 		break;
 	default:
-		error("channel %d: internal error: cannot send ieof for istate %d",
+		error("channel %d: cannot send ieof for istate %d",
 		    c->self, c->istate);
 		break;
 	}
@@ -241,7 +272,7 @@
 		packet_send();
 		break;
 	default:
-		error("channel %d: internal error: cannot send oclose for ostate %d",
+		error("channel %d: cannot send oclose for ostate %d",
 		     c->self, c->ostate);
 		break;
 	}
@@ -265,7 +296,10 @@
 	}
 	switch (c->ostate) {
 	case CHAN_OUTPUT_OPEN:
-		/* wait until a data from the channel is consumed if a CLOSE is received */
+		/*
+		 * wait until a data from the channel is consumed if a CLOSE
+		 * is received
+		 */
 		debug("channel %d: output open -> drain", c->self);
 		c->ostate = CHAN_OUTPUT_WAIT_DRAIN;
 		break;
@@ -287,7 +321,7 @@
 {
 	debug("channel %d: ibuf empty", c->self);
 	if (buffer_len(&c->input)) {
-		error("channel %d: internal error: chan_ibuf_empty for non empty buffer",
+		error("channel %d: chan_ibuf_empty for non empty buffer",
 		     c->self);
 		return;
 	}
@@ -299,7 +333,7 @@
 		c->istate = CHAN_INPUT_CLOSED;
 		break;
 	default:
-		error("channel %d: internal error: chan_ibuf_empty for istate %d",
+		error("channel %d: chan_ibuf_empty for istate %d",
 		     c->self, c->istate);
 		break;
 	}
@@ -329,7 +363,7 @@
 		c->ostate = CHAN_OUTPUT_CLOSED;
 		break;
 	default:
-		error("channel %d: internal error: chan_write_failed for ostate %d",
+		error("channel %d: chan_write_failed for ostate %d",
 		    c->self, c->ostate);
 		break;
 	}
@@ -339,7 +373,7 @@
 {
 	debug("channel %d: obuf empty", c->self);
 	if (buffer_len(&c->output)) {
-		error("internal error: chan_obuf_empty %d for non empty buffer",
+		error("channel %d: chan_obuf_empty for non empty buffer",
 		    c->self);
 		return;
 	}
@@ -350,7 +384,7 @@
 		c->ostate = CHAN_OUTPUT_CLOSED;
 		break;
 	default:
-		error("channel %d: internal error: chan_obuf_empty for ostate %d",
+		error("channel %d: chan_obuf_empty for ostate %d",
 		    c->self, c->ostate);
 		break;
 	}
@@ -366,7 +400,7 @@
 		packet_send();
 		break;
 	default:
-		error("channel %d: internal error: cannot send eof for istate %d",
+		error("channel %d: cannot send eof for istate %d",
 		    c->self, c->istate);
 		break;
 	}
@@ -377,10 +411,10 @@
 	debug("channel %d: send close", c->self);
 	if (c->ostate != CHAN_OUTPUT_CLOSED ||
 	    c->istate != CHAN_INPUT_CLOSED) {
-		error("channel %d: internal error: cannot send close for istate/ostate %d/%d",
+		error("channel %d: cannot send close for istate/ostate %d/%d",
 		    c->self, c->istate, c->ostate);
 	} else if (c->flags & CHAN_CLOSE_SENT) {
-		error("channel %d: internal error: already sent close", c->self);
+		error("channel %d: already sent close", c->self);
 	} else {
 		packet_start(SSH2_MSG_CHANNEL_CLOSE);
 		packet_put_int(c->remote_id);
@@ -480,11 +514,13 @@
 	debug("channel %d: close_write", c->self);
 	if (c->sock != -1) {
 		if (shutdown(c->sock, SHUT_WR) < 0)
-			debug("channel %d: chan_shutdown_write: shutdown() failed for fd%d: %.100s",
+			debug("channel %d: chan_shutdown_write: "
+			    "shutdown() failed for fd%d: %.100s",
 			    c->self, c->sock, strerror(errno));
 	} else {
 		if (close(c->wfd) < 0)
-			log("channel %d: chan_shutdown_write: close() failed for fd%d: %.100s",
+			log("channel %d: chan_shutdown_write: "
+			    "close() failed for fd%d: %.100s",
 			    c->self, c->wfd, strerror(errno));
 		c->wfd = -1;
 	}
@@ -503,11 +539,14 @@
 		 */
 		if (shutdown(c->sock, SHUT_RD) < 0
 		    && (errno != ENOTCONN && errno != EINVAL))
-			error("channel %d: chan_shutdown_read: shutdown() failed for fd%d [i%d o%d]: %.100s",
-			    c->self, c->sock, c->istate, c->ostate, strerror(errno));
+			error("channel %d: chan_shutdown_read: "
+			    "shutdown() failed for fd%d [i%d o%d]: %.100s",
+			    c->self, c->sock, c->istate, c->ostate,
+                            strerror(errno));
 	} else {
 		if (close(c->rfd) < 0)
-			log("channel %d: chan_shutdown_read: close() failed for fd%d: %.100s",
+			log("channel %d: chan_shutdown_read: "
+			    "close() failed for fd%d: %.100s",
 			    c->self, c->rfd, strerror(errno));
 		c->rfd = -1;
 	}
