From 6b4b4c78cfb177314129895103ea3559903bbf00 Mon Sep 17 00:00:00 2001 From: Tiago Cunha Date: Mon, 2 Nov 2009 21:40:44 +0000 Subject: [PATCH] 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. --- client.c | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/client.c b/client.c index 7368e767..6b8eff4a 100644 --- a/client.c +++ b/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 @@ -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;