send events for option state changes

This commit is contained in:
Sean Middleditch 2009-03-19 14:57:15 -04:00
parent 1688da10e1
commit f713302661
1 changed files with 11 additions and 6 deletions

View File

@ -253,23 +253,27 @@ static void _negotiate(telnet_t *telnet, unsigned char cmd,
case RFC1143_WANTNO:
q.him = RFC1143_NO;
_set_rfc1143(telnet, q);
_event(telnet, TELNET_EV_WONT, cmd, telopt, 0, 0);
_error(telnet, __LINE__, __func__, TELNET_EPROTOCOL, 0,
"DONT answered by WILL");
break;
case RFC1143_WANTNO_OP:
q.him = RFC1143_YES;
_set_rfc1143(telnet, q);
_event(telnet, TELNET_EV_WILL, cmd, telopt, 0, 0);
_error(telnet, __LINE__, __func__, TELNET_EPROTOCOL, 0,
"DONT answered by WILL");
break;
case RFC1143_WANTYES:
q.him = RFC1143_YES;
_set_rfc1143(telnet, q);
_event(telnet, TELNET_EV_WILL, cmd, telopt, 0, 0);
break;
case RFC1143_WANTYES_OP:
q.him = RFC1143_WANTNO;
_set_rfc1143(telnet, q);
telnet_send_telopt(telnet, TELNET_DONT, telopt);
_event(telnet, TELNET_EV_WILL, cmd, telopt, 0, 0);
break;
}
break;
@ -283,20 +287,17 @@ static void _negotiate(telnet_t *telnet, unsigned char cmd,
q.him = RFC1143_NO;
_set_rfc1143(telnet, q);
telnet_send_telopt(telnet, TELNET_DONT, telopt);
_event(telnet, TELNET_EV_WONT, 0, telopt,
0, 0);
_event(telnet, TELNET_EV_WONT, 0, telopt, 0, 0);
break;
case RFC1143_WANTNO:
q.him = RFC1143_NO;
_set_rfc1143(telnet, q);
_event(telnet, TELNET_EV_WONT, 0, telopt,
0, 0);
_event(telnet, TELNET_EV_WONT, 0, telopt, 0, 0);
break;
case RFC1143_WANTNO_OP:
q.him = RFC1143_WANTYES;
_set_rfc1143(telnet, q);
_event(telnet, TELNET_EV_DO, 0, telopt,
0, 0);
_event(telnet, TELNET_EV_DO, 0, telopt, 0, 0);
break;
case RFC1143_WANTYES:
case RFC1143_WANTYES_OP:
@ -322,23 +323,27 @@ static void _negotiate(telnet_t *telnet, unsigned char cmd,
case RFC1143_WANTNO:
q.us = RFC1143_NO;
_set_rfc1143(telnet, q);
_event(telnet, TELNET_EV_DONT, cmd, telopt, 0, 0);
_error(telnet, __LINE__, __func__, TELNET_EPROTOCOL, 0,
"WONT answered by DO");
break;
case RFC1143_WANTNO_OP:
q.us = RFC1143_YES;
_set_rfc1143(telnet, q);
_event(telnet, TELNET_EV_DO, cmd, telopt, 0, 0);
_error(telnet, __LINE__, __func__, TELNET_EPROTOCOL, 0,
"WONT answered by DO");
break;
case RFC1143_WANTYES:
q.us = RFC1143_YES;
_set_rfc1143(telnet, q);
_event(telnet, TELNET_EV_DO, cmd, telopt, 0, 0);
break;
case RFC1143_WANTYES_OP:
q.us = RFC1143_WANTNO;
_set_rfc1143(telnet, q);
telnet_send_telopt(telnet, TELNET_WONT, telopt);
_event(telnet, TELNET_EV_DO, cmd, telopt, 0, 0);
break;
}
break;