the proper term is subnegotiation, not subrequest
diff --git a/libtelnet.c b/libtelnet.c
index 8fddf64..2034e57 100644
--- a/libtelnet.c
+++ b/libtelnet.c
@@ -118,7 +118,7 @@
 		/* IAC command */
 		case LIBTELNET_STATE_IAC:
 			switch (byte) {
-			/* subrequest */
+			/* subnegotiation */
 			case LIBTELNET_SB:
 				telnet->state = LIBTELNET_STATE_SB;
 				break;
@@ -171,9 +171,9 @@
 			telnet->state = LIBTELNET_STATE_DATA;
 			break;
 
-		/* subrequest -- buffer bytes until end request */
+		/* subnegotiation -- buffer bytes until end request */
 		case LIBTELNET_STATE_SB:
-			/* IAC command in subrequest -- either IAC SE or IAC IAC */
+			/* IAC command in subnegotiation -- either IAC SE or IAC IAC */
 			if (byte == LIBTELNET_IAC) {
 				telnet->state = LIBTELNET_STATE_SB_IAC;
 			/* buffer the byte, or bail if we can't */
@@ -184,10 +184,10 @@
 			}
 			break;
 
-		/* IAC escaping inside a subrequest */
+		/* IAC escaping inside a subnegotiation */
 		case LIBTELNET_STATE_SB_IAC:
 			switch (byte) {
-			/* end subrequest */
+			/* end subnegotiation */
 			case LIBTELNET_SE:
 				/* return to default state */
 				start = i + 1;
@@ -201,7 +201,7 @@
 				}
 
 				/* invoke callback */
-				libtelnet_subrequest_cb(telnet, telnet->buffer[0],
+				libtelnet_subnegotiation_cb(telnet, telnet->buffer[0],
 					telnet->buffer + 1, telnet->length - 1, user_data);
 				telnet->length = 0;
 
@@ -406,8 +406,9 @@
 }
 
 /* send sub-request */
-void libtelnet_send_subrequest(struct libtelnet_t *telnet, unsigned char type,
-		unsigned char *buffer, unsigned int size, void *user_data)  {
+void libtelnet_send_subnegotiation(struct libtelnet_t *telnet,
+		unsigned char type, unsigned char *buffer, unsigned int size,
+		void *user_data)  {
 	libtelnet_send_command(telnet, LIBTELNET_SB, user_data);
 	libtelnet_send_data(telnet, &type, 1, user_data);
 	libtelnet_send_data(telnet, buffer, size, user_data);
diff --git a/libtelnet.h b/libtelnet.h
index 575d7ba..8d2d861 100644
--- a/libtelnet.h
+++ b/libtelnet.h
@@ -84,7 +84,7 @@
 		unsigned char cmd, void *user_data);
 extern void libtelnet_negotiate_cb(struct libtelnet_t *telnet,
 		unsigned char cmd, unsigned char opt, void *user_data);
-extern void libtelnet_subrequest_cb(struct libtelnet_t *telnet,
+extern void libtelnet_subnegotiation_cb(struct libtelnet_t *telnet,
 		unsigned char type, unsigned char *data, unsigned int size,
 		void *user_data);
 #ifdef HAVE_ZLIB
@@ -118,7 +118,7 @@
 		unsigned char *buffer, unsigned int size, void *user_data);
 
 /* send sub-request */
-extern void libtelnet_send_subrequest(struct libtelnet_t *telnet,
+extern void libtelnet_send_subnegotiation(struct libtelnet_t *telnet,
 		unsigned char type, unsigned char *buffer, unsigned int size,
 		void *user_data);
 
diff --git a/telnet-proxy.c b/telnet-proxy.c
index 9e431e8..96a1fe3 100644
--- a/telnet-proxy.c
+++ b/telnet-proxy.c
@@ -185,8 +185,9 @@
 			conn->remote);
 }
 
-void libtelnet_subrequest_cb(struct libtelnet_t *telnet, unsigned char type,
-		unsigned char *buffer, unsigned int size, void *user_data) {
+void libtelnet_subnegotiation_cb(struct libtelnet_t *telnet,
+		unsigned char type, unsigned char *buffer, unsigned int size,
+		void *user_data) {
 	struct conn_t *conn = (struct conn_t*)user_data;
 
 	printf("%s SUB %d (%s)", conn->name, (int)type, get_opt(type));
@@ -196,7 +197,7 @@
 	}
 	printf("\e[0m\n");
 
-	libtelnet_send_subrequest(&conn->remote->telnet, type, buffer, size,
+	libtelnet_send_subnegotiation(&conn->remote->telnet, type, buffer, size,
 			conn->remote);
 }