Commit 0c011e01 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 2950e1bb
Pipeline #47403 failed with stages
in 16 minutes and 58 seconds
......@@ -4244,22 +4244,33 @@ isc_socket_cleanunix(const isc_sockaddr_t *sockaddr, bool active) {
#define S_ISSOCK(mode) 0
#endif /* ifndef S_ISSOCK */
if (active) {
if (stat(sockaddr->type.sunix.sun_path, &sb) < 0) {
if (stat(sockaddr->type.sunix.sun_path, &sb) < 0) {
switch (errno) {
case ENOENT:
if (active) /* We exited cleanly last time */
break;
/* intentional falltrough */
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) {
strerror_r(errno, strbuf, sizeof(strbuf));
isc_log_write(isc_lctx, ISC_LOGCATEGORY_GENERAL,
......@@ -4280,29 +4291,6 @@ isc_socket_cleanunix(const 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:
strerror_r(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, (const struct sockaddr *)&sockaddr->type.sunix,
sizeof(sockaddr->type.sunix)) < 0)
{
......@@ -4328,7 +4316,6 @@ isc_socket_cleanunix(const isc_sockaddr_t *sockaddr, bool active) {
break;
}
}
cleanup:
close(s);
#else /* ifdef ISC_PLATFORM_HAVESYSUNH */
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