Hi Mark,
Thanks for the info. I have another question regarding tracking the TCP states. I noticed in fnTELNETListener, you track the states and set the the TCP_EVENT_ABORT: case back to the listening state. Should I be tracking and assigning things likewise?
// Telnet client/server standard call back
//
static int fnTELNETListener(USOCKET Socket, unsigned char ucEvent, unsigned char *ucIp_Data, unsigned short usPortLen)
{
case TCP_EVENT_CONNECTED: // TCP connection has been established
TELNET_session->ucState = TELNET_STATE_CONNECTED;
return (TELNET_session->fnApp(Socket, TCP_EVENT_CONNECTED, ucIp_Data, usPortLen));
case TCP_EVENT_ABORT:
fnTCP_Listen(Socket, TELNET_session->usTelnetPortNumber, ptrTELNET->usMaxWindow); // set back to listening state
fnResetTelnetSession(TELNET_session);
TELNET_session->fnApp(Socket, TCP_EVENT_ABORT, ucIp_Data, usPortLen);
// fall through intentionally
case TCP_EVENT_CLOSE:
return (TELNET_session->fnApp(Socket, TCP_EVENT_CLOSE, ucIp_Data, usPortLen));
case TCP_EVENT_CLOSED:
TELNET_session->fnApp(Socket, TCP_EVENT_CLOSED, ucIp_Data, usPortLen);
fnResetTelnetSession(TELNET_session);
fnTCP_Listen(Socket, TELNET_session->usTelnetPortNumber, ptrTELNET->usMaxWindow); // set TCP port back to listening state
break;