Fix -n mode: do not wait for clients to connect

This commit is contained in:
Marc André Tanner 2014-06-17 23:36:47 +02:00
parent 3e4485642b
commit a7e13911c5
2 changed files with 7 additions and 1 deletions

View File

@ -104,6 +104,7 @@ typedef struct {
volatile sig_atomic_t running; volatile sig_atomic_t running;
const char *name; const char *name;
const char *session_name; const char *session_name;
bool read_pty;
} Server; } Server;
static Server server = { .running = true, .exit_status = -1 }; static Server server = { .running = true, .exit_status = -1 };
@ -465,6 +466,8 @@ int main(int argc, char *argv[]) {
has_term = true; has_term = true;
} }
server.read_pty = (action == 'n');
switch (action) { switch (action) {
redo: redo:
case 'n': case 'n':

View File

@ -70,6 +70,7 @@ static Client *server_accept_client() {
c->state = STATE_CONNECTED; c->state = STATE_CONNECTED;
c->next = server.clients; c->next = server.clients;
server.clients = c; server.clients = c;
server.read_pty = true;
return c; return c;
} }
@ -151,6 +152,8 @@ static void server_mainloop() {
FD_ZERO(&new_writefds); FD_ZERO(&new_writefds);
FD_SET(server.socket, &new_readfds); FD_SET(server.socket, &new_readfds);
int new_fdmax = server.socket; int new_fdmax = server.socket;
if (server.read_pty)
FD_SET_MAX(server.pty, &new_readfds, new_fdmax);
Packet *exit_pkt = NULL; Packet *exit_pkt = NULL;
while (!exit_pkt) { while (!exit_pkt) {
@ -243,7 +246,7 @@ static void server_mainloop() {
c = c->next; c = c->next;
} }
if (server.running) if (server.running && server.read_pty)
FD_SET_MAX(server.pty, &new_readfds, new_fdmax); FD_SET_MAX(server.pty, &new_readfds, new_fdmax);
} }