dont require a buffer for subnegotiations with no data; more efficient for apps that dont use more advanced subnegotiation features
diff --git a/libtelnet.h b/libtelnet.h
index 87f0659..629dace 100644
--- a/libtelnet.h
+++ b/libtelnet.h
@@ -101,7 +101,8 @@
 	LIBTELNET_STATE_WILL,
 	LIBTELNET_STATE_WONT,
 	LIBTELNET_STATE_SB,
-	LIBTELNET_STATE_SB_IAC
+	LIBTELNET_STATE_SB_DATA,
+	LIBTELNET_STATE_SB_DATA_IAC
 };
 
 /* error codes */
@@ -160,6 +161,8 @@
 	enum libtelnet_state_t state;
 	/* processing mode */
 	enum libtelnet_mode_t mode;
+	/* current subnegotiation telopt */
+	unsigned char sb_telopt;
 };
 
 /* initialize a telnet state tracker */