telnet: do not check for 0 return from poll (it's impossible)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
036dbb9d9a
commit
ec07420eb9
@ -603,39 +603,39 @@ int telnet_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
|
|
||||||
signal(SIGINT, record_signo);
|
signal(SIGINT, record_signo);
|
||||||
|
|
||||||
ufds[0].fd = 0; ufds[1].fd = netfd;
|
ufds[0].fd = STDIN_FILENO;
|
||||||
ufds[0].events = ufds[1].events = POLLIN;
|
ufds[0].events = POLLIN;
|
||||||
|
ufds[1].fd = netfd;
|
||||||
|
ufds[1].events = POLLIN;
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
switch (poll(ufds, 2, -1)) {
|
if (poll(ufds, 2, -1) < 0) {
|
||||||
case 0:
|
|
||||||
/* timeout */
|
|
||||||
case -1:
|
|
||||||
/* error, ignore and/or log something, bay go to loop */
|
/* error, ignore and/or log something, bay go to loop */
|
||||||
if (bb_got_signal)
|
if (bb_got_signal)
|
||||||
con_escape();
|
con_escape();
|
||||||
else
|
else
|
||||||
sleep(1);
|
sleep(1);
|
||||||
break;
|
continue;
|
||||||
default:
|
}
|
||||||
|
|
||||||
if (ufds[0].revents) {
|
// FIXME: reads can block. Need full bidirectional buffering.
|
||||||
len = safe_read(STDIN_FILENO, G.buf, DATABUFSIZE);
|
|
||||||
if (len <= 0)
|
|
||||||
doexit(EXIT_SUCCESS);
|
|
||||||
TRACE(0, ("Read con: %d\n", len));
|
|
||||||
handle_net_output(len);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ufds[1].revents) {
|
if (ufds[0].revents) {
|
||||||
len = safe_read(netfd, G.buf, DATABUFSIZE);
|
len = safe_read(STDIN_FILENO, G.buf, DATABUFSIZE);
|
||||||
if (len <= 0) {
|
if (len <= 0)
|
||||||
full_write1_str("Connection closed by foreign host\r\n");
|
doexit(EXIT_SUCCESS);
|
||||||
doexit(EXIT_FAILURE);
|
TRACE(0, ("Read con: %d\n", len));
|
||||||
}
|
handle_net_output(len);
|
||||||
TRACE(0, ("Read netfd (%d): %d\n", netfd, len));
|
}
|
||||||
handle_net_input(len);
|
|
||||||
|
if (ufds[1].revents) {
|
||||||
|
len = safe_read(netfd, G.buf, DATABUFSIZE);
|
||||||
|
if (len <= 0) {
|
||||||
|
full_write1_str("Connection closed by foreign host\r\n");
|
||||||
|
doexit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
TRACE(0, ("Read netfd (%d): %d\n", netfd, len));
|
||||||
|
handle_net_input(len);
|
||||||
}
|
}
|
||||||
} /* while (1) */
|
} /* while (1) */
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user