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