ignore host read eof while exiting

This commit is contained in:
rsc 2005-01-20 22:59:50 +00:00
parent 303cb7c6db
commit f0264abf26
3 changed files with 9 additions and 0 deletions

View file

@ -17,6 +17,7 @@ uchar outdata[DATASIZE];
short outcount;
int hversion;
int hostfd[2];
int exiting;
void inmesg(Hmesg, int);
int inshort(int);
@ -29,6 +30,7 @@ void hplumb(int);
void clrlock(void);
int snarfswap(char*, int, char**);
void
rcv(void)
{
@ -298,6 +300,7 @@ inmesg(Hmesg type, int count)
break;
case Hexit:
exiting = 1;
outT0(Texit);
threadexitsall(nil);
break;

View file

@ -279,6 +279,11 @@ hostproc(void *arg)
n = read(hostfd[0], hostbuf[i].data, sizeof hostbuf[i].data);
if(0) fprint(2, "hostproc %d\n", n);
if(n <= 0){
if(n == 0){
if(exiting)
threadexits(nil);
werrstr("unexpected eof");
}
fprint(2, "samterm: host read error: %r\n");
threadexitsall("host");
}

View file

@ -87,6 +87,7 @@ extern Channel *hostc;
extern int hversion;
extern int plumbfd;
extern int hostfd[2];
extern int exiting;
#define gettext sam_gettext /* stupid gcc built-in functions */
Rune *gettext(Flayer*, long, ulong*);