mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 00:56:10 +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:
		
							
								
								
									
										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>
 | 
			
		||||
@@ -218,16 +218,17 @@ client_main(struct client_ctx *cctx)
 | 
			
		||||
		printf("[server exited]\n");
 | 
			
		||||
		return (0);
 | 
			
		||||
	case CCTX_EXIT:
 | 
			
		||||
		if (cctx->errstr != NULL) {
 | 
			
		||||
			printf("[error: %s]\n", cctx->errstr);
 | 
			
		||||
			return (1);
 | 
			
		||||
		}
 | 
			
		||||
		printf("[exited]\n");
 | 
			
		||||
		return (0);
 | 
			
		||||
	case CCTX_DETACH:
 | 
			
		||||
		printf("[detached]\n");
 | 
			
		||||
		return (0);
 | 
			
		||||
	case CCTX_ERROR:
 | 
			
		||||
		printf("[error: %s]\n", cctx->errstr);
 | 
			
		||||
		return (1);
 | 
			
		||||
	default:
 | 
			
		||||
		printf("[error: unknown error]\n");
 | 
			
		||||
		printf("[unknown error]\n");
 | 
			
		||||
		return (1);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -267,6 +268,7 @@ client_msg_dispatch(struct client_ctx *cctx)
 | 
			
		||||
			return (0);
 | 
			
		||||
		datalen = imsg.hdr.len - IMSG_HEADER_SIZE;
 | 
			
		||||
 | 
			
		||||
		log_debug("CLIENT GOT %d", imsg.hdr.type);
 | 
			
		||||
		switch (imsg.hdr.type) {
 | 
			
		||||
		case MSG_DETACH:
 | 
			
		||||
			if (datalen != 0)
 | 
			
		||||
@@ -281,8 +283,8 @@ client_msg_dispatch(struct client_ctx *cctx)
 | 
			
		||||
			memcpy(&printdata, imsg.data, sizeof printdata);
 | 
			
		||||
 | 
			
		||||
			printdata.msg[(sizeof printdata.msg) - 1] = '\0';
 | 
			
		||||
			/* Error string used after exit message from server. */
 | 
			
		||||
			cctx->errstr = xstrdup(printdata.msg);
 | 
			
		||||
			cctx->exittype = CCTX_ERROR;
 | 
			
		||||
			imsg_free(&imsg);
 | 
			
		||||
			return (-1);
 | 
			
		||||
		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>
 | 
			
		||||
@@ -970,8 +970,7 @@ struct client_ctx {
 | 
			
		||||
		CCTX_DETACH,
 | 
			
		||||
		CCTX_EXIT,
 | 
			
		||||
		CCTX_DIED,
 | 
			
		||||
		CCTX_SHUTDOWN,
 | 
			
		||||
		CCTX_ERROR
 | 
			
		||||
		CCTX_SHUTDOWN
 | 
			
		||||
	} exittype;
 | 
			
		||||
	const char	*errstr;
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user