mirror of
https://github.com/tmux/tmux.git
synced 2025-04-22 12:28:48 +00:00
That was the wrong fix. MSG_ERROR should set the error and the client should
use the error and exit on MSG_EXIT (it was being handled in the default case). Undo the last change, move the errstr check into the MSG_EXIT case, and add a comment.
This commit is contained in:
parent
c23bde74ec
commit
d33caca6c7
14
client.c
14
client.c
@ -1,4 +1,4 @@
|
|||||||
/* $OpenBSD: client.c,v 1.15 2009/09/02 20:00:10 nicm Exp $ */
|
/* $Id: client.c,v 1.68 2009-09-02 20:16:29 nicm Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||||
@ -218,16 +218,17 @@ client_main(struct client_ctx *cctx)
|
|||||||
printf("[server exited]\n");
|
printf("[server exited]\n");
|
||||||
return (0);
|
return (0);
|
||||||
case CCTX_EXIT:
|
case CCTX_EXIT:
|
||||||
|
if (cctx->errstr != NULL) {
|
||||||
|
printf("[error: %s]\n", cctx->errstr);
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
printf("[exited]\n");
|
printf("[exited]\n");
|
||||||
return (0);
|
return (0);
|
||||||
case CCTX_DETACH:
|
case CCTX_DETACH:
|
||||||
printf("[detached]\n");
|
printf("[detached]\n");
|
||||||
return (0);
|
return (0);
|
||||||
case CCTX_ERROR:
|
|
||||||
printf("[error: %s]\n", cctx->errstr);
|
|
||||||
return (1);
|
|
||||||
default:
|
default:
|
||||||
printf("[error: unknown error]\n");
|
printf("[unknown error]\n");
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -267,6 +268,7 @@ client_msg_dispatch(struct client_ctx *cctx)
|
|||||||
return (0);
|
return (0);
|
||||||
datalen = imsg.hdr.len - IMSG_HEADER_SIZE;
|
datalen = imsg.hdr.len - IMSG_HEADER_SIZE;
|
||||||
|
|
||||||
|
log_debug("CLIENT GOT %d", imsg.hdr.type);
|
||||||
switch (imsg.hdr.type) {
|
switch (imsg.hdr.type) {
|
||||||
case MSG_DETACH:
|
case MSG_DETACH:
|
||||||
if (datalen != 0)
|
if (datalen != 0)
|
||||||
@ -281,8 +283,8 @@ client_msg_dispatch(struct client_ctx *cctx)
|
|||||||
memcpy(&printdata, imsg.data, sizeof printdata);
|
memcpy(&printdata, imsg.data, sizeof printdata);
|
||||||
|
|
||||||
printdata.msg[(sizeof printdata.msg) - 1] = '\0';
|
printdata.msg[(sizeof printdata.msg) - 1] = '\0';
|
||||||
|
/* Error string used after exit message from server. */
|
||||||
cctx->errstr = xstrdup(printdata.msg);
|
cctx->errstr = xstrdup(printdata.msg);
|
||||||
cctx->exittype = CCTX_ERROR;
|
|
||||||
imsg_free(&imsg);
|
imsg_free(&imsg);
|
||||||
return (-1);
|
return (-1);
|
||||||
case MSG_EXIT:
|
case MSG_EXIT:
|
||||||
|
5
tmux.h
5
tmux.h
@ -1,4 +1,4 @@
|
|||||||
/* $Id: tmux.h,v 1.432 2009-09-02 20:01:22 nicm Exp $ */
|
/* $Id: tmux.h,v 1.433 2009-09-02 20:16:29 nicm Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
|
||||||
@ -970,8 +970,7 @@ struct client_ctx {
|
|||||||
CCTX_DETACH,
|
CCTX_DETACH,
|
||||||
CCTX_EXIT,
|
CCTX_EXIT,
|
||||||
CCTX_DIED,
|
CCTX_DIED,
|
||||||
CCTX_SHUTDOWN,
|
CCTX_SHUTDOWN
|
||||||
CCTX_ERROR
|
|
||||||
} exittype;
|
} exittype;
|
||||||
const char *errstr;
|
const char *errstr;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user