delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2001/01/01/14:52:13

Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT sources DOT redhat DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin/>
List-Post: <mailto:cygwin AT sources DOT redhat DOT com>
List-Help: <mailto:cygwin-help AT sources DOT redhat DOT com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-owner AT sources DOT redhat DOT com
Delivered-To: mailing list cygwin AT sources DOT redhat DOT com
Message-ID: <3A50DFB1.66C2616E@mindspring.com>
Date: Mon, 01 Jan 2001 11:51:14 -0800
From: Anthony & Yinkwan <hips AT mindspring DOT com>
Reply-To: hips AT mindspring DOT com
X-Mailer: Mozilla 4.76 (Macintosh; U; PPC)
X-Accept-Language: en,zh
MIME-Version: 1.0
To: cygwin AT cygwin DOT com
Subject: Re: rlogin, SIGWINCH and TIOCPKT_WINDOW with Solaris server
References: <3A50310D DOT 5D39E567 AT mindspring DOT com>

Further investigation, based on the Cygwin source, Stevens' book and
truss'ing the Solaris rlogin client, leads me to believe that the
rlogind should be using the MSG_OOB flag to send the TIOCPKT_WINDOW
control byte to the client ... the child process on the client-side
should receive a SIGURG signal from the system prompting it to do the
out-of-band processing that results in a SIGUSR1 being sent to the
parent process on the client-side which initiates the window change management.

I'm certain that the Cygwin rlogin client is not receiving a SIGURG from
which you can deduce that it's either not being initiated at the server
side, or not being generated by the client system.

When I truss the Solaris rlogin client I get the following interesting
stuff :

554:  getpid()             = 554 [550]
554:  ioctl(4, FIOSETOWN, 0xEFFFFA84)        = 0
554:  kill(554, SIGURG)          = 0
554:      Received signal #21, SIGURG [caught]
554:        siginfo: SIGURG pid=554 uid=0
554:  poll(0xEFFFC5C0, 1, 0)           = 1
554:  ioctl(4, 0x40047307, 0xEFFFF630)    = 0
554:  recv(4, "80", 1, 1)           = 1
554:  kill(550, SIGUSR1)            = 0
550:      Received signal #16, SIGUSR1, in read() [caught]
550:        siginfo: SIGUSR1 pid=554 uid=0
554:  setcontext(0xEFFFF780)
550:  read(0, 0xEFFFFAAF, 1)           Err#4 EINTR

... unless I'm reading things incorrectly, this indicates that the
client-side child process sends a SIGURG to itself (3rd line) !

I added the kill to the Cygwin code as follows :

SN8981335729 # diff rlogin.c rlogin.c.orig
843,845d842
< 
<       kill(getpid(),SIGURG);
< 

... et voila, things work ! ... is it a hack, or does it make sense ?

Anthony.


Anthony & Yinkwan wrote:
> 
> Hmmm ... I'm running the Cygwin rlogin client in an xterm and logging
> into a remote Solaris 2.6 server ... I would dearly like even the
> initial window size to be properly propagated to the remote server, not
> to mention subsequent changes to the xterm window size, but it seems
> that the expected TIOCPKT_WINDOW indicator is not being sent by the
> server when the session is established ... does anyone have any idea why ?
> 
> By the way, if I manually send a SIGUSR1 signal to the parent process,
> or a SIGURG to the client everything works ... I think it looks like a
> Solaris server-side issue !
> 
> I'm off to celebrate New Year now, so I suspect I'll have to wait for
> next year for an answer on this !
> 
> Thanks,
> 
> Anthony.
> 
> --
> Want to unsubscribe from this list?
> Check out: http://cygwin.com/ml/#unsubscribe-simple

--
Want to unsubscribe from this list?
Check out: http://cygwin.com/ml/#unsubscribe-simple

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019