diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2018-10-12 19:28:39 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2018-10-12 19:28:39 +0200 |
commit | 06abb1098a90a344d2aabfb486f56b8c5aada342 (patch) | |
tree | e510ef2c8de2102884cb26bd742ff2bf25fcfc5f /sys/src/cmd/ssh.c | |
parent | f12f773944dd15f32dbe41b016fd1df34463069b (diff) |
ssh: fix spinning due to sticky intr flag on connection timeout
Diffstat (limited to 'sys/src/cmd/ssh.c')
-rw-r--r-- | sys/src/cmd/ssh.c | 38 |
1 files changed, 18 insertions, 20 deletions
diff --git a/sys/src/cmd/ssh.c b/sys/src/cmd/ssh.c index 51514aa80..14e8ef2e5 100644 --- a/sys/src/cmd/ssh.c +++ b/sys/src/cmd/ssh.c @@ -110,8 +110,6 @@ wasintr(void) char err[ERRMAX]; int r; - if(intr) - return 1; memset(err, 0, sizeof(err)); errstr(err, sizeof(err)); r = strcmp(err, "interrupted") == 0; @@ -1331,25 +1329,25 @@ Next1: switch(recvpkt()){ qlock(&sl); if(send.eof) break; - if(n < 0 && wasintr()){ + if(n < 0 && wasintr()) + intr = 1; + if(intr){ if(!raw) break; - if(intr){ - getdim(); - sendpkt("busbuuuu", MSG_CHANNEL_REQUEST, - send.chan, - "window-change", 13, - 0, - tty.cols, - tty.lines, - tty.xpixels, - tty.ypixels); - sendpkt("busbs", MSG_CHANNEL_REQUEST, - send.chan, - "signal", 6, - 0, - "INT", 3); - intr = 0; - } + getdim(); + sendpkt("busbuuuu", MSG_CHANNEL_REQUEST, + send.chan, + "window-change", 13, + 0, + tty.cols, + tty.lines, + tty.xpixels, + tty.ypixels); + sendpkt("busbs", MSG_CHANNEL_REQUEST, + send.chan, + "signal", 6, + 0, + "INT", 3); + intr = 0; continue; } if(n <= 0) |