slcanpty: detect that master PTY descriptor closed

Terminate slcanpty when the pty file descriptor is closed instead of performing
an endless loop in the select() statement.

Reported-by: Janusz Uzycki <j.uzycki@elproma.com.pl>
Signed-off-by: Janusz Uzycki <j.uzycki@elproma.com.pl>
Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
pull/1/head
Oliver Hartkopp 2013-06-07 20:02:57 +02:00
parent df76977207
commit 704d5f22d1
1 changed files with 5 additions and 2 deletions

View File

@ -75,8 +75,11 @@ int pty2can(int pty, int socket, struct can_filter *fi,
int tmp, i;
nbytes = read(pty, &buf, sizeof(buf)-1);
if (nbytes < 0) {
if (nbytes <= 0) {
/* nbytes == 0 : no error but pty decriptor has been closed */
if (nbytes < 0)
perror("read pty");
return 1;
}