mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 09:26:05 +00:00 
			
		
		
		
	Sync OpenBSD patchset 477:
There isn't much point in doing lstat before connect so instead just do connect and handle ENOENT from it which is a little tidier.
This commit is contained in:
		
							
								
								
									
										24
									
								
								client.c
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								client.c
									
									
									
									
									
								
							@@ -1,4 +1,4 @@
 | 
			
		||||
/* $Id: client.c,v 1.82 2009-10-28 23:11:07 tcunha Exp $ */
 | 
			
		||||
/* $Id: client.c,v 1.83 2009-11-02 21:40:44 tcunha Exp $ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
			
		||||
@@ -59,19 +59,6 @@ client_init(char *path, int cmdflags, int flags)
 | 
			
		||||
	setproctitle("client (%s)", rpathbuf);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
	if (lstat(path, &sb) != 0) {
 | 
			
		||||
		if (cmdflags & CMD_STARTSERVER && errno == ENOENT) {
 | 
			
		||||
			if ((fd = server_start(path)) == -1)
 | 
			
		||||
				goto start_failed;
 | 
			
		||||
			goto server_started;
 | 
			
		||||
		}
 | 
			
		||||
		goto not_found;
 | 
			
		||||
	}
 | 
			
		||||
	if (!S_ISSOCK(sb.st_mode)) {
 | 
			
		||||
		errno = ENOTSOCK;
 | 
			
		||||
		goto not_found;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	memset(&sa, 0, sizeof sa);
 | 
			
		||||
	sa.sun_family = AF_UNIX;
 | 
			
		||||
	size = strlcpy(sa.sun_path, path, sizeof sa.sun_path);
 | 
			
		||||
@@ -84,9 +71,14 @@ client_init(char *path, int cmdflags, int flags)
 | 
			
		||||
		fatal("socket failed");
 | 
			
		||||
 | 
			
		||||
	if (connect(fd, (struct sockaddr *) &sa, SUN_LEN(&sa)) == -1) {
 | 
			
		||||
		if (errno == ECONNREFUSED) {
 | 
			
		||||
			if (unlink(path) != 0 || !(cmdflags & CMD_STARTSERVER))
 | 
			
		||||
		if (!(cmdflags & CMD_STARTSERVER))
 | 
			
		||||
			goto not_found;
 | 
			
		||||
		switch (errno) {
 | 
			
		||||
		case ECONNREFUSED:
 | 
			
		||||
			if (unlink(path) != 0)
 | 
			
		||||
				goto not_found;
 | 
			
		||||
			/* FALLTHROUGH */
 | 
			
		||||
		case ENOENT:
 | 
			
		||||
			if ((fd = server_start(path)) == -1)
 | 
			
		||||
				goto start_failed;
 | 
			
		||||
			goto server_started;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user