[prev in list] [next in list] [prev in thread] [next in thread]
List: busybox-cvs
Subject: [git commit master 1/1] telnet: do not check for 0 return from poll (it's impossible)
From: vda.linux () googlemail ! com (Denys Vlasenko)
Date: 2010-10-29 0:33:38
Message-ID: 20101029003426.D61148D554 () busybox ! osuosl ! org
[Download RAW message or body]
commit: http://git.busybox.net/busybox/commit/?id=ec07420eb914f6ca62273c54790853ccf22636e8
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master
Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
networking/telnet.c | 48 ++++++++++++++++++++++++------------------------
1 files changed, 24 insertions(+), 24 deletions(-)
diff --git a/networking/telnet.c b/networking/telnet.c
index 0cf28f6..f6fad68 100644
--- a/networking/telnet.c
+++ b/networking/telnet.c
@@ -603,39 +603,39 @@ int telnet_main(int argc UNUSED_PARAM, char **argv)
signal(SIGINT, record_signo);
- ufds[0].fd = 0; ufds[1].fd = netfd;
- ufds[0].events = ufds[1].events = POLLIN;
+ ufds[0].fd = STDIN_FILENO;
+ ufds[0].events = POLLIN;
+ ufds[1].fd = netfd;
+ ufds[1].events = POLLIN;
while (1) {
- switch (poll(ufds, 2, -1)) {
- case 0:
- /* timeout */
- case -1:
+ if (poll(ufds, 2, -1) < 0) {
/* error, ignore and/or log something, bay go to loop */
if (bb_got_signal)
con_escape();
else
sleep(1);
- break;
- default:
-
- if (ufds[0].revents) {
- 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);
- }
+ continue;
+ }
+
+// FIXME: reads can block. Need full bidirectional buffering.
+
+ if (ufds[0].revents) {
+ 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) {
- 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);
+ 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) */
}
--
1.7.1
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic