This is the mail archive of the cygwin@sources.redhat.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: rlogin, SIGWINCH and TIOCPKT_WINDOW with Solaris server


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]