summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/configfile-glue.c6
-rw-r--r--src/connections.c4
-rw-r--r--src/gw_backend.c2
-rw-r--r--src/http_cgi.c4
-rw-r--r--src/mod_accesslog.c4
-rw-r--r--src/mod_ajp13.c2
-rw-r--r--src/mod_auth.c6
-rw-r--r--src/mod_authn_gssapi.c2
-rw-r--r--src/mod_authn_pam.c2
-rw-r--r--src/mod_magnet.c13
-rw-r--r--src/mod_maxminddb.c2
-rw-r--r--src/mod_status.c8
-rw-r--r--src/reqpool.c2
-rw-r--r--src/request.h3
14 files changed, 32 insertions, 28 deletions
diff --git a/src/configfile-glue.c b/src/configfile-glue.c
index 3be1c2a0..46ad820e 100644
--- a/src/configfile-glue.c
+++ b/src/configfile-glue.c
@@ -496,7 +496,7 @@ static cond_result_t config_check_cond_nocache_eval(request_st * const r, const
l = &r->uri.authority;
break;
case COMP_HTTP_REMOTE_IP:
- l = &r->con->dst_addr_buf;
+ l = r->dst_addr_buf;
break;
case COMP_HTTP_SCHEME:
l = &r->uri.scheme;
@@ -556,8 +556,8 @@ static cond_result_t config_check_cond_nocache_eval(request_st * const r, const
(((uintptr_t)dc->string.ptr + dc->string.used + 1 + 7) & ~7);
int bits = ((unsigned char *)dc->string.ptr)[dc->string.used];
match ^= (bits)
- ? sock_addr_is_addr_eq_bits(addr, &r->con->dst_addr, bits)
- : sock_addr_is_addr_eq(addr, &r->con->dst_addr);
+ ? sock_addr_is_addr_eq_bits(addr, r->dst_addr, bits)
+ : sock_addr_is_addr_eq(addr, r->dst_addr);
break;
}
match ^= (buffer_is_equal(l, &dc->string));
diff --git a/src/connections.c b/src/connections.c
index b5fb62c9..22f4b8c1 100644
--- a/src/connections.c
+++ b/src/connections.c
@@ -1409,7 +1409,7 @@ static void connection_check_timeout (connection * const con, const unix_time64_
"after writing %lld bytes. We waited %d seconds. "
"If this is a problem, increase "
"server.max-write-idle",
- con->dst_addr_buf.ptr,
+ r->dst_addr_buf->ptr,
BUFFER_INTLEN_PTR(&r->target),
(long long)r->write_queue.bytes_out,
(int)r->conf.max_write_idle);
@@ -1493,7 +1493,7 @@ static void connection_check_timeout (connection * const con, const unix_time64_
"NOTE: a request from %s for %.*s timed out after writing "
"%lld bytes. We waited %d seconds. If this is a problem, "
"increase server.max-write-idle",
- con->dst_addr_buf.ptr,
+ r->dst_addr_buf->ptr,
BUFFER_INTLEN_PTR(&r->target),
(long long)con->write_queue->bytes_out,
(int)r->conf.max_write_idle);
diff --git a/src/gw_backend.c b/src/gw_backend.c
index 5839b3a9..84b5f504 100644
--- a/src/gw_backend.c
+++ b/src/gw_backend.c
@@ -891,7 +891,7 @@ static gw_host * gw_host_get(request_st * const r, gw_extension *extension, int
}
case GW_BALANCE_STICKY:
{ /* source sticky balancing */
- const buffer * const dst_addr_buf = &r->con->dst_addr_buf;
+ const buffer * const dst_addr_buf = r->dst_addr_buf;
const uint32_t base_hash =
gw_hash(BUF_PTR_LEN(dst_addr_buf), DJBHASH_INIT);
uint32_t last_max = UINT32_MAX;
diff --git a/src/http_cgi.c b/src/http_cgi.c
index b1e9d349..2f1a5b89 100644
--- a/src/http_cgi.c
+++ b/src/http_cgi.c
@@ -306,10 +306,10 @@ http_cgi_headers (request_st * const r, http_cgi_opts * const opts, http_cgi_hea
rc |= cb(vdata, CONST_STR_LEN("SERVER_NAME"), s, n);
rc |= cb(vdata, CONST_STR_LEN("REMOTE_ADDR"),
- BUF_PTR_LEN(&con->dst_addr_buf));
+ BUF_PTR_LEN(r->dst_addr_buf));
rc |= cb(vdata, CONST_STR_LEN("REMOTE_PORT"), buf,
- li_utostrn(buf,sizeof(buf),sock_addr_get_port(&con->dst_addr)));
+ li_utostrn(buf, sizeof(buf), sock_addr_get_port(r->dst_addr)));
for (n = 0; n < r->rqst_headers.used; n++) {
data_string *ds = (data_string *)r->rqst_headers.data[n];
diff --git a/src/mod_accesslog.c b/src/mod_accesslog.c
index 1140eb7c..b5c5e280 100644
--- a/src/mod_accesslog.c
+++ b/src/mod_accesslog.c
@@ -769,7 +769,7 @@ log_access_record_cold (buffer * const b, const request_st * const r,
switch (f->field) {
case FORMAT_SERVER_PORT:
if (f->opt & FORMAT_FLAG_PORT_REMOTE) {
- buffer_append_int(b, sock_addr_get_port(&con->dst_addr));
+ buffer_append_int(b, sock_addr_get_port(r->dst_addr));
break;
}
/* else if (f->opt & FORMAT_FLAG_PORT_LOCAL) *//*(default)*/
@@ -875,7 +875,7 @@ static int log_access_record (const request_st * const r, buffer * const b, form
/*case FORMAT_REMOTE_HOST:*/
#endif
case FORMAT_REMOTE_ADDR:
- buffer_append_string_buffer(b, &r->con->dst_addr_buf);
+ buffer_append_string_buffer(b, r->dst_addr_buf);
break;
case FORMAT_HTTP_HOST:
accesslog_append_buffer(b, &r->uri.authority, esc);
diff --git a/src/mod_ajp13.c b/src/mod_ajp13.c
index ebebf2b9..e3dd04fa 100644
--- a/src/mod_ajp13.c
+++ b/src/mod_ajp13.c
@@ -590,7 +590,7 @@ ajp13_create_env (handler_ctx * const hctx)
n = ajp13_enc_string(x, n, BUF_PTR_LEN(&r->uri.path));
if (0 == n) break;
/* remote_addr */
- n = ajp13_enc_string(x, n, BUF_PTR_LEN(&r->con->dst_addr_buf));
+ n = ajp13_enc_string(x, n, BUF_PTR_LEN(r->dst_addr_buf));
if (0 == n) break;
/* remote_host *//*(skip DNS lookup)*/
n = ajp13_enc_string(x, n, NULL, 0);
diff --git a/src/mod_auth.c b/src/mod_auth.c
index bf4b028f..0cd88c9a 100644
--- a/src/mod_auth.c
+++ b/src/mod_auth.c
@@ -849,7 +849,7 @@ mod_auth_check_basic(request_st * const r, void *p_d, const struct http_auth_req
default:
log_error(r->conf.errh, __FILE__, __LINE__,
"password doesn't match for %s username: %s IP: %s",
- r->uri.path.ptr, user, r->con->dst_addr_buf.ptr);
+ r->uri.path.ptr, user, r->dst_addr_buf->ptr);
r->keep_alive = -1; /*(disable keep-alive if bad password)*/
rc = mod_auth_send_401_unauthorized_basic(r, require->realm);
break;
@@ -1420,7 +1420,7 @@ mod_auth_digest_validate_params (request_st * const r, const struct http_auth_re
log_error(r->conf.errh, __FILE__, __LINE__,
"digest: auth failed: uri mismatch (%s != %.*s), IP: %s",
r->target_orig.ptr, (int)dp->len[e_uri], dp->ptr[e_uri],
- r->con->dst_addr_buf.ptr);
+ r->dst_addr_buf->ptr);
return mod_auth_send_400_bad_request(r);
}
@@ -1533,7 +1533,7 @@ mod_auth_check_digest (request_st * const r, void *p_d, const struct http_auth_r
/* digest not ok */
log_error(r->conf.errh, __FILE__, __LINE__,
"digest: auth failed for %.*s: wrong password, IP: %s",
- (int)ai.ulen, ai.username, r->con->dst_addr_buf.ptr);
+ (int)ai.ulen, ai.username, r->dst_addr_buf->ptr);
r->keep_alive = -1; /*(disable keep-alive if bad password)*/
return mod_auth_send_401_unauthorized_digest(r, require, 0);
}
diff --git a/src/mod_authn_gssapi.c b/src/mod_authn_gssapi.c
index bb33de33..17a0f98a 100644
--- a/src/mod_authn_gssapi.c
+++ b/src/mod_authn_gssapi.c
@@ -777,7 +777,7 @@ static handler_t mod_authn_gssapi_basic(request_st * const r, void *p_d, const h
/* ret == KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN or no authz rules match */
log_error(r->conf.errh, __FILE__, __LINE__,
"password doesn't match for %s username: %s IP: %s",
- r->uri.path.ptr, username->ptr, r->con->dst_addr_buf.ptr);
+ r->uri.path.ptr, username->ptr, r->dst_addr_buf->ptr);
return mod_authn_gssapi_send_401_unauthorized_basic(r);
}
}
diff --git a/src/mod_authn_pam.c b/src/mod_authn_pam.c
index 1ac05934..b985216d 100644
--- a/src/mod_authn_pam.c
+++ b/src/mod_authn_pam.c
@@ -150,7 +150,7 @@ static handler_t mod_authn_pam_query(request_st * const r, void *p_d, const buff
mod_authn_pam_patch_config(r, p);
- const char * const addrstr = r->con->dst_addr_buf.ptr;
+ const char * const addrstr = r->dst_addr_buf->ptr;
rc = pam_start(p->conf.service, username->ptr, &conv, &pamh);
if (PAM_SUCCESS != rc
|| PAM_SUCCESS !=(rc = pam_set_item(pamh, PAM_RHOST, addrstr))
diff --git a/src/mod_magnet.c b/src/mod_magnet.c
index 1a62001b..030ac90b 100644
--- a/src/mod_magnet.c
+++ b/src/mod_magnet.c
@@ -1966,9 +1966,9 @@ magnet_env_get_buffer_by_id (request_st * const r, const int id)
case MAGNET_ENV_REQUEST_URI: dest = &r->target; break;
case MAGNET_ENV_REQUEST_ORIG_URI: dest = &r->target_orig; break;
case MAGNET_ENV_REQUEST_PATH_INFO: dest = &r->pathinfo; break;
- case MAGNET_ENV_REQUEST_REMOTE_ADDR: dest = &r->con->dst_addr_buf; break;
+ case MAGNET_ENV_REQUEST_REMOTE_ADDR: dest = r->dst_addr_buf; break;
case MAGNET_ENV_REQUEST_REMOTE_PORT:
- buffer_append_int(dest, sock_addr_get_port(&r->con->dst_addr));
+ buffer_append_int(dest, sock_addr_get_port(r->dst_addr));
break;
case MAGNET_ENV_REQUEST_SERVER_ADDR: /* local IP without port */
case MAGNET_ENV_REQUEST_SERVER_PORT:
@@ -2031,12 +2031,11 @@ static int
magnet_env_set_raddr_by_id (lua_State *L, request_st * const r, const int id,
const const_buffer * const val)
{
- connection * const con = r->con;
switch (id) {
case MAGNET_ENV_REQUEST_REMOTE_ADDR:
#ifdef HAVE_SYS_UN_H
if (val->len && *val->ptr == '/'
- && 0 == sock_addr_assign(&con->dst_addr, AF_UNIX, 0, val->ptr)) {
+ && 0 == sock_addr_assign(r->dst_addr, AF_UNIX, 0, val->ptr)) {
}
else
#endif
@@ -2046,7 +2045,7 @@ magnet_env_set_raddr_by_id (lua_State *L, request_st * const r, const int id,
if (1 == sock_addr_from_str_numeric(&saddr, val->ptr, r->conf.errh)
&& saddr.plain.sa_family != AF_UNSPEC) {
sock_addr_set_port(&saddr, 0);
- memcpy(&con->dst_addr, &saddr, sizeof(sock_addr));
+ memcpy(r->dst_addr, &saddr, sizeof(sock_addr));
}
else {
return luaL_error(L,
@@ -2054,11 +2053,11 @@ magnet_env_set_raddr_by_id (lua_State *L, request_st * const r, const int id,
val->ptr);
}
}
- buffer_copy_string_len(&con->dst_addr_buf, val->ptr, val->len);
+ buffer_copy_string_len(r->dst_addr_buf, val->ptr, val->len);
config_cond_cache_reset_item(r, COMP_HTTP_REMOTE_IP);
break;
case MAGNET_ENV_REQUEST_REMOTE_PORT:
- sock_addr_set_port(&con->dst_addr, (unsigned short)atoi(val->ptr));
+ sock_addr_set_port(r->dst_addr, (unsigned short)atoi(val->ptr));
break;
default:
break;
diff --git a/src/mod_maxminddb.c b/src/mod_maxminddb.c
index 04034f70..fb5dc850 100644
--- a/src/mod_maxminddb.c
+++ b/src/mod_maxminddb.c
@@ -439,7 +439,7 @@ REQUEST_FUNC(mod_maxminddb_request_env_handler)
if (!pconf.activate || NULL == pconf.env || NULL == pconf.mmdb)
return HANDLER_GO_ON;
- const sock_addr * const dst_addr = &r->con->dst_addr;
+ const sock_addr * const dst_addr = r->dst_addr;
#if 0
/* future: if mod_extforward is (future) extended for HTTP/2 and
diff --git a/src/mod_status.c b/src/mod_status.c
index b9350d2e..06e2970a 100644
--- a/src/mod_status.c
+++ b/src/mod_status.c
@@ -170,9 +170,9 @@ static void mod_status_get_multiplier(buffer *b, double avg, int size) {
buffer_append_string_len(b, unit, 2);
}
-static void mod_status_html_rtable_r (buffer * const b, const request_st * const r, const connection * const con, const unix_time64_t cur_ts) {
+static void mod_status_html_rtable_r (buffer * const b, const request_st * const r, const unix_time64_t cur_ts) {
buffer_append_str3(b, CONST_STR_LEN("<tr><td class=\"string\">"),
- BUF_PTR_LEN(&con->dst_addr_buf),
+ BUF_PTR_LEN(r->dst_addr_buf),
CONST_STR_LEN("</td><td class=\"int\">"));
if (r->reqbody_length) {
@@ -245,7 +245,7 @@ static void mod_status_html_rtable (request_st * const rq, const server * const
http_chunk_append_mem(rq, BUF_PTR_LEN(b));
buffer_clear(b);
}
- mod_status_html_rtable_r(b, r, con, cur_ts);
+ mod_status_html_rtable_r(b, r, cur_ts);
}
if (NULL != h2c) {
for (uint32_t j = 0, rused = h2c->rused; j < rused; ++j) {
@@ -253,7 +253,7 @@ static void mod_status_html_rtable (request_st * const rq, const server * const
http_chunk_append_mem(rq, BUF_PTR_LEN(b));
buffer_clear(b);
}
- mod_status_html_rtable_r(b, h2c->r[j], con, cur_ts);
+ mod_status_html_rtable_r(b, h2c->r[j], cur_ts);
}
}
}
diff --git a/src/reqpool.c b/src/reqpool.c
index 19e93c4a..1e6e7f29 100644
--- a/src/reqpool.c
+++ b/src/reqpool.c
@@ -57,6 +57,8 @@ request_init_data (request_st * const r, connection * const con, server * const
r->tmp_buf = srv->tmp_buf;
r->resp_body_scratchpad = -1;
r->server_name = &r->uri.authority;
+ r->dst_addr = &con->dst_addr;
+ r->dst_addr_buf = &con->dst_addr_buf;
/* init plugin-specific per-request structures */
r->plugin_ctx = ck_calloc(srv->plugins.used + 1, sizeof(void *));
diff --git a/src/request.h b/src/request.h
index e1098b46..c382553c 100644
--- a/src/request.h
+++ b/src/request.h
@@ -166,6 +166,9 @@ struct request_st {
buffer pathinfo;
buffer server_name_buf;
+ void *dst_addr;
+ buffer *dst_addr_buf;
+
/* response */
uint32_t resp_header_len;
uint64_t resp_htags; /*bitfield of flagged headers present in response*/