diff options
Diffstat (limited to 'client.c')
-rw-r--r-- | client.c | 33 |
1 files changed, 15 insertions, 18 deletions
@@ -155,7 +155,7 @@ client_main(struct client_ctx *cctx) sigcont = 0; } - switch (client_msg_dispatch(cctx, &error)) { + switch (client_msg_dispatch(cctx)) { case -1: goto out; case 0: @@ -179,8 +179,10 @@ client_main(struct client_ctx *cctx) fatal("poll failed"); } - if (buffer_poll(&pfd, cctx->srv_in, cctx->srv_out) != 0) - goto server_dead; + if (buffer_poll(&pfd, cctx->srv_in, cctx->srv_out) != 0) { + cctx->exittype = CCTX_DIED; + break; + } } out: @@ -188,28 +190,23 @@ out: printf("[terminated]\n"); return (1); } - - if (cctx->flags & CCTX_SHUTDOWN) { + switch (cctx->exittype) { + case CCTX_DIED: + printf("[lost server]\n"); + return (0); + case CCTX_SHUTDOWN: printf("[server exited]\n"); return (0); - } - - if (cctx->flags & CCTX_EXIT) { + case CCTX_EXIT: printf("[exited]\n"); return (0); - } - - if (cctx->flags & CCTX_DETACH) { + case CCTX_DETACH: printf("[detached]\n"); return (0); + default: + printf("[error: %s]\n", cctx->errstr); + return (1); } - - printf("[error: %s]\n", error); - return (1); - -server_dead: - printf("[lost server]\n"); - return (0); } void |