On Tue, Sep 25, 2012 at 2:06 PM, Florian Fainelli <flor...@alphacore.org> wrote:
> From: Hasmish Guthrie <h...@openwrt.org>
>
> Default behavior for a non-interactive shell is that SIGINT is processeld
> locally by the shell (and typically ignored), this runtime environment is
> inherited by children, hence Ctrl-C has no effect within a telnet session.
> This patch enables the correct behavior.

Your shell is buggy. It must not pass SIGINT set to SIG_IGN to children.
Mine does not:

$ strace -oLOG -tt sh -c 'busybox telnetd -F -l cat'

$ busybox telnet 127.0.0.1

Entering character mode
Escape character is '^]'.


Fedora release 16 (Verne)
Kernel 3.4.2-1.fc16.i686.PAE on an i686 (/dev/pts/3)
^CConnection closed by foreign host

LOG:
pid 12647 is telnetd
pid 12652 is cat

12652 17:17:29.230019 read(0,  <unfinished ...>
12647 17:17:29.750303 <... select resumed> ) = 1 (in [4])
12647 17:17:29.750414 read(4, "\3", 2026) = 1
  ^^^^^^^ telnetd: got ^C from network
12647 17:17:29.750574 select(6, [3 4 5], [5], NULL, NULL) = 1 (out [5])
12647 17:17:29.750753 write(5, "\3", 1) = 1
  ^^^^^^^ telnetd: sending it to pty
12652 17:17:29.750883 <... read resumed> 0x8f6c000, 32768) = ?
ERESTARTSYS (To be restarted if SA_RESTART is set)
  ^^^^^^^ cat: read is interrupted by a signal
12647 17:17:29.750926 select(6, [3 4 5], [], NULL, NULL <unfinished ...>
12652 17:17:29.750969 --- SIGINT {si_signo=SIGINT, si_code=SI_KERNEL} ---
  ^^^^^^^ cat: it's SIGINT
12647 17:17:29.751010 <... select resumed> ) = 1 (in [5])
12647 17:17:29.751070 read(5, "^C", 2026) = 2
  ^^^^^^^ telnetd: read pty's response echo of ^C
12647 17:17:29.751181 select(6, [3 4 5], [4], NULL, NULL <unfinished ...>
12652 17:17:29.751241 +++ killed by SIGINT +++
  ^^^^^^^ cat: dies
12647 17:17:29.751273 <... select resumed> ) = 2 (in [5], out [4])
12647 17:17:29.751334 write(4, "^C", 2) = 2

-- 
vda
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to