49 lines
1.4 KiB
Diff
49 lines
1.4 KiB
Diff
--- mod_proxy_protocol.c-orig 2016-05-19 12:58:26.902187400 +0000
|
|
+++ mod_proxy_protocol.c 2016-05-19 13:24:25.417638197 +0000
|
|
@@ -44,6 +44,7 @@
|
|
#include "ap_config.h"
|
|
#include "ap_listen.h"
|
|
#include "apr_strings.h"
|
|
+#include "apr_version.h"
|
|
|
|
module AP_MODULE_DECLARE_DATA proxy_protocol_module;
|
|
|
|
@@ -91,19 +92,37 @@
|
|
static int pp_sockaddr_compat(apr_sockaddr_t *addr1, apr_sockaddr_t *addr2)
|
|
{
|
|
/* test exact address equality */
|
|
+#if !(APR_VERSION_AT_LEAST(1,5,0))
|
|
+ apr_sockaddr_t addr0;
|
|
+ static const char inaddr_any[ sizeof(struct in_addr) ] = {0};
|
|
+#endif
|
|
+
|
|
if (apr_sockaddr_equal(addr1, addr2) &&
|
|
(addr1->port == addr2->port || addr1->port == 0 || addr2->port == 0)) {
|
|
return 1;
|
|
}
|
|
|
|
+#if APR_VERSION_AT_LEAST(1,5,0)
|
|
/* test address wildcards */
|
|
if (apr_sockaddr_is_wildcard(addr1) &&
|
|
(addr1->port == 0 || addr1->port == addr2->port)) {
|
|
+#else
|
|
+ addr0.ipaddr_ptr = &inaddr_any;
|
|
+ addr0.ipaddr_len = addr1->ipaddr_len;
|
|
+ if (apr_sockaddr_equal(&addr0, addr1) &&
|
|
+ (addr1->port == 0 || addr1->port == addr2->port)) {
|
|
+#endif
|
|
return 1;
|
|
}
|
|
|
|
+#if APR_VERSION_AT_LEAST (1,5,0)
|
|
if (apr_sockaddr_is_wildcard(addr2) &&
|
|
(addr2->port == 0 || addr2->port == addr1->port)) {
|
|
+#else
|
|
+ addr0.ipaddr_len = addr2->ipaddr_len;
|
|
+ if (apr_sockaddr_equal(&addr0, addr2) &&
|
|
+ (addr2->port == 0 || addr2->port == addr1->port)) {
|
|
+#endif
|
|
return 1;
|
|
}
|
|
|