aboutsummaryrefslogtreecommitdiff
path: root/networking
diff options
context:
space:
mode:
Diffstat (limited to 'networking')
-rw-r--r--networking/telnetd.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/networking/telnetd.c b/networking/telnetd.c
index 8cadc6344..f1927e069 100644
--- a/networking/telnetd.c
+++ b/networking/telnetd.c
@@ -492,7 +492,11 @@ int telnetd_main(int argc, char **argv)
while (ts) {
struct tsession *next = ts->next; /* in case we free ts. */
if (ts->shell_pid == -1) {
+#if !ENABLE_FEATURE_TELNETD_STANDALONE
+ return 0;
+#else
free_session(ts);
+#endif
} else {
if (ts->size1 > 0) /* can write to pty */
FD_SET(ts->ptyfd, &wrfdset);
@@ -552,8 +556,6 @@ int telnetd_main(int argc, char **argv)
if (count < 0) {
if (errno == EAGAIN)
goto skip1;
- if (IS_INETD)
- return 0;
goto kill_session;
}
ts->size1 -= count;
@@ -569,8 +571,6 @@ int telnetd_main(int argc, char **argv)
if (count < 0) {
if (errno == EAGAIN)
goto skip2;
- if (IS_INETD)
- return 0;
goto kill_session;
}
ts->size2 -= count;
@@ -601,8 +601,6 @@ int telnetd_main(int argc, char **argv)
if (count <= 0) {
if (count < 0 && errno == EAGAIN)
goto skip3;
- if (IS_INETD)
- return 0;
goto kill_session;
}
/* Ignore trailing NUL if it is there */
@@ -622,8 +620,6 @@ int telnetd_main(int argc, char **argv)
if (count <= 0) {
if (count < 0 && errno == EAGAIN)
goto skip4;
- if (IS_INETD)
- return 0;
goto kill_session;
}
ts->size2 += count;
@@ -635,8 +631,14 @@ int telnetd_main(int argc, char **argv)
ts = next;
continue;
kill_session:
+#if !ENABLE_FEATURE_TELNETD_STANDALONE
+ return 0;
+#else
+ if (IS_INETD)
+ return 0;
free_session(ts);
ts = next;
+#endif
}
goto again;