Skip to content

Commit

Permalink
src: fix exit code check on linux
Browse files Browse the repository at this point in the history
  • Loading branch information
tsl0922 committed Sep 15, 2019
1 parent 5381d0f commit 62844c2
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 6 deletions.
17 changes: 11 additions & 6 deletions src/protocol.c
Expand Up @@ -133,9 +133,9 @@ tty_client_destroy(struct tty_client *client) {
lwsl_err("kill: %d, errno: %d (%s)\n", pid, errno, strerror(errno));
}
pid_t pid_out;
int status = wait_proc(client->pid, &pid_out);
client->exit_status = wait_proc(client->pid, &pid_out);
if (pid_out > 0) {
lwsl_notice("process exited with code %d, pid: %d\n", status, pid_out);
lwsl_notice("process exited with code %d, pid: %d\n", client->exit_status, pid_out);
}
close(client->pty);

Expand Down Expand Up @@ -196,7 +196,14 @@ spawn_process(struct tty_client *client) {

void
tty_client_poll(struct tty_client *client) {
if (!client->running || client->state == STATE_READY) return;
if (client->pid <= 0 || client->state == STATE_READY) return;

if (!client->running) {
memset(client->pty_buffer, 0, sizeof(client->pty_buffer));
client->pty_len = client->exit_status;
client->state = STATE_READY;
return;
}

fd_set des_set;
FD_ZERO (&des_set);
Expand Down Expand Up @@ -372,9 +379,7 @@ callback_tty(struct lws *wsi, enum lws_callback_reasons reason,
return -1;
}
}
if (spawn_process(client) != 0) {
return 1;
}
if (spawn_process(client) != 0) return 1;
break;
default:
lwsl_warn("ignored unknown message type: %c\n", command);
Expand Down
8 changes: 8 additions & 0 deletions src/server.c
Expand Up @@ -186,6 +186,14 @@ sigchld_handler() {
int status = wait_proc(-1, &pid);
if (pid > 0) {
lwsl_notice("process exited with code %d, pid: %d\n", status, pid);
struct tty_client *iterator;
LIST_FOREACH(iterator, &server->clients, list) {
if (iterator->pid == pid) {
iterator->running = false;
iterator->exit_status = status;
break;
}
}
}
}

Expand Down
1 change: 1 addition & 0 deletions src/server.h
Expand Up @@ -44,6 +44,7 @@ struct tty_client {

int pid;
int pty;
int exit_status;
enum pty_state state;
char pty_buffer[LWS_PRE + 1 + BUF_SIZE];
ssize_t pty_len;
Expand Down

0 comments on commit 62844c2

Please sign in to comment.