Supporting UNIX sockets in address matching.

This closes #645 issue on GitHub.

(Also moved a changelog line that was misplaced in a previous commit.)
This commit is contained in:
Alejandro Colomar
2022-02-28 12:12:30 +01:00
parent c1cea3c97d
commit 6e36584a2e
5 changed files with 35 additions and 7 deletions

View File

@@ -31,6 +31,12 @@ NGINX Unit updated to 1.28.0.
date="" time=""
packager="Nginx Packaging <nginx-packaging@f5.com>">
<change type="feature">
<para>
supporting UNIX sockets in address matching.
</para>
</change>
<change type="feature">
<para>
forwarded header to replace client address and protocol.
@@ -49,6 +55,12 @@ more http variables support.
</para>
</change>
<change type="feature">
<para>
added a new variable, $dollar, that translates to a literal "$" during
</para>
</change>
<change type="bugfix">
<para>
an index file that didn't contain a file extension was incorrectly
@@ -62,13 +74,6 @@ increased the applications' startup timeout.
</para>
</change>
<change type="feature">
<para>
added a new variable, $dollar, that translates to a literal "$" during
variable substitution.
</para>
</change>
</changes>

View File

@@ -2157,6 +2157,11 @@ nxt_conf_vldt_match_addr(nxt_conf_validation_t *vldt,
return nxt_conf_vldt_error(vldt, "The \"address\" does not support "
"IPv6 with your configuration.");
case NXT_ADDR_PATTERN_NO_UNIX_ERROR:
return nxt_conf_vldt_error(vldt, "The \"address\" does not support "
"UNIX domain sockets with your "
"configuration.");
default:
return nxt_conf_vldt_error(vldt, "The \"address\" has an unknown "
"format.");

View File

@@ -1818,6 +1818,13 @@ nxt_http_route_addr_pattern_match(nxt_http_route_addr_pattern_t *p,
break;
#endif
#if (NXT_HAVE_UNIX_DOMAIN)
case AF_UNIX:
match = (base->addr_family == AF_UNIX);
break;
#endif
default:
match = 0;
break;

View File

@@ -41,6 +41,16 @@ nxt_http_route_addr_pattern_parse(nxt_mp_t *mp,
base->negative = 0;
}
if (nxt_str_eq(&addr, "unix", 4)) {
#if (NXT_HAVE_UNIX_DOMAIN)
base->addr_family = AF_UNIX;
return NXT_OK;
#else
return NXT_ADDR_PATTERN_NO_UNIX_ERROR;
#endif
}
if (nxt_slow_path(addr.length < 2)) {
return NXT_ADDR_PATTERN_LENGTH_ERROR;
}

View File

@@ -26,6 +26,7 @@ enum {
NXT_ADDR_PATTERN_RANGE_OVERLAP_ERROR,
NXT_ADDR_PATTERN_CIDR_ERROR,
NXT_ADDR_PATTERN_NO_IPv6_ERROR,
NXT_ADDR_PATTERN_NO_UNIX_ERROR,
};