summaryrefslogtreecommitdiff
path: root/sys/src/cmd/ssh.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2018-10-12 19:28:39 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2018-10-12 19:28:39 +0200
commit06abb1098a90a344d2aabfb486f56b8c5aada342 (patch)
treee510ef2c8de2102884cb26bd742ff2bf25fcfc5f /sys/src/cmd/ssh.c
parentf12f773944dd15f32dbe41b016fd1df34463069b (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.c38
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)