Commit d642a1a3 authored by Petr Menšík's avatar Petr Menšík Committed by Mark Andrews

Remove few lines in unix socket handling

Reuse the same checks two times, make difference minimal.

(cherry picked from commit 72d81c47)
parent b56e821d
Pipeline #47405 failed with stages
in 29 minutes and 59 seconds
......@@ -5418,22 +5418,34 @@ isc__socket_cleanunix(isc_sockaddr_t *sockaddr, bool active) {
#define S_ISSOCK(mode) 0
#endif
if (active) {
if (stat(sockaddr->type.sunix.sun_path, &sb) < 0) {
isc__strerror(errno, strbuf, sizeof(strbuf));
if (stat(sockaddr->type.sunix.sun_path, &sb) < 0) {
switch (errno) {
case ENOENT:
if (active) { /* We exited cleanly last time */
break;
}
/* intentional fallthrough */
default:
strerror_r(errno, strbuf, sizeof(strbuf));
isc_log_write(isc_lctx, ISC_LOGCATEGORY_GENERAL,
ISC_LOGMODULE_SOCKET, ISC_LOG_ERROR,
ISC_LOGMODULE_SOCKET,
active ? ISC_LOG_ERROR : ISC_LOG_WARNING,
"isc_socket_cleanunix: stat(%s): %s",
sockaddr->type.sunix.sun_path, strbuf);
return;
}
} else {
if (!(S_ISSOCK(sb.st_mode) || S_ISFIFO(sb.st_mode))) {
isc_log_write(isc_lctx, ISC_LOGCATEGORY_GENERAL,
ISC_LOGMODULE_SOCKET, ISC_LOG_ERROR,
ISC_LOGMODULE_SOCKET,
active ? ISC_LOG_ERROR : ISC_LOG_WARNING,
"isc_socket_cleanunix: %s: not a socket",
sockaddr->type.sunix.sun_path);
return;
}
}
if (active) {
if (unlink(sockaddr->type.sunix.sun_path) < 0) {
isc__strerror(errno, strbuf, sizeof(strbuf));
isc_log_write(isc_lctx, ISC_LOGCATEGORY_GENERAL,
......@@ -5454,31 +5466,9 @@ isc__socket_cleanunix(isc_sockaddr_t *sockaddr, bool active) {
return;
}
if (stat(sockaddr->type.sunix.sun_path, &sb) < 0) {
switch (errno) {
case ENOENT: /* We exited cleanly last time */
break;
default:
isc__strerror(errno, strbuf, sizeof(strbuf));
isc_log_write(isc_lctx, ISC_LOGCATEGORY_GENERAL,
ISC_LOGMODULE_SOCKET, ISC_LOG_WARNING,
"isc_socket_cleanunix: stat(%s): %s",
sockaddr->type.sunix.sun_path, strbuf);
break;
}
goto cleanup;
}
if (!(S_ISSOCK(sb.st_mode) || S_ISFIFO(sb.st_mode))) {
isc_log_write(isc_lctx, ISC_LOGCATEGORY_GENERAL,
ISC_LOGMODULE_SOCKET, ISC_LOG_WARNING,
"isc_socket_cleanunix: %s: not a socket",
sockaddr->type.sunix.sun_path);
goto cleanup;
}
if (connect(s, (struct sockaddr *)&sockaddr->type.sunix,
sizeof(sockaddr->type.sunix)) < 0) {
if (connect(s, (const struct sockaddr *)&sockaddr->type.sunix,
sizeof(sockaddr->type.sunix)) < 0)
{
switch (errno) {
case ECONNREFUSED:
case ECONNRESET:
......@@ -5502,7 +5492,6 @@ isc__socket_cleanunix(isc_sockaddr_t *sockaddr, bool active) {
break;
}
}
cleanup:
close(s);
#else
UNUSED(sockaddr);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment