diff --git a/include/ircd/http.h b/include/ircd/http.h index 65af51abc..8606967ba 100644 --- a/include/ircd/http.h +++ b/include/ircd/http.h @@ -320,7 +320,9 @@ struct ircd::http::request::head string_view upgrade; string_view range; string_view if_range; - string_view forwarded_for; + string_view forwarded[1]; // last forwarded + string_view forwarded_for[1]; // last x-forwarded-for + string_view forwarded_host[1]; // last x-forwarded-host size_t content_length {0}; string_view uri; // full view of (path, query, fragmet) diff --git a/ircd/http.cc b/ircd/http.cc index b12d9ee6c..97f3c9916 100644 --- a/ircd/http.cc +++ b/ircd/http.cc @@ -394,8 +394,14 @@ ircd::http::assign(request::head &head, else if(key == "if-range"_sv) head.if_range = val; + else if(key == "forwarded"_sv) + head.forwarded[0] = val; + else if(key == "x-forwarded-for"_sv) - head.forwarded_for = val; + head.forwarded_for[0] = val; + + else if(key == "x-forwarded-host"_sv) + head.forwarded_host[0] = val; } ircd::http::response::response(window_buffer &out,