so-called-hang-on-exit

Frank Cusack fcusack at fcusack.com
Thu Aug 1 16:35:18 EST 2002


It's been working fantastically for me.
/fc

On Wed, Jul 31, 2002 at 06:35:47PM +0200, Markus Friedl wrote:
> so, should this go into 3.5?
> 
> Index: serverloop.c
> ===================================================================
> RCS file: /home/markus/cvs/ssh/serverloop.c,v
> retrieving revision 1.103
> diff -u -r1.103 serverloop.c
> --- serverloop.c	24 Jun 2002 14:33:27 -0000	1.103
> +++ serverloop.c	12 Jul 2002 16:34:20 -0000
> @@ -388,6 +388,11 @@
>  			buffer_append(&stderr_buffer, buf, len);
>  		}
>  	}
> +	/* allow data loss on pty */
> +	if (child_terminated && fderr == -1 && !fdout_eof) {
> +		close(fdout);
> +		fdout_eof = 1;
> +	}
>  }
>  
>  /*
> Index: session.c
> ===================================================================
> RCS file: /home/markus/cvs/ssh/session.c,v
> retrieving revision 1.143
> diff -u -r1.143 session.c
> --- session.c	30 Jun 2002 21:54:16 -0000	1.143
> +++ session.c	12 Jul 2002 16:35:32 -0000
> @@ -1629,11 +1629,15 @@
>  	/*
>  	 * emulate a write failure with 'chan_write_failed', nobody will be
>  	 * interested in data we write.
> -	 * Note that we must not call 'chan_read_failed', since there could
> +	 * Note that for the non-pty case we must not call 'chan_read_failed',
> +	 * since there could
>  	 * be some more data waiting in the pipe.
>  	 */
>  	if (c->ostate != CHAN_OUTPUT_CLOSED)
>  		chan_write_failed(c);
> +	/* allow data loss on pty */
> +	if (s->ttyfd != -1 && c->istate == CHAN_INPUT_OPEN)
> +		chan_read_failed(c);       
>  	s->chanid = -1;
>  }
>  
> _______________________________________________
> openssh-unix-dev at mindrot.org mailing list
> http://www.mindrot.org/mailman/listinfo/openssh-unix-dev
> 



More information about the openssh-unix-dev mailing list