From 7867e7a0b4a48e776cfc29ce432af1a022f58109 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Sun, 21 Jan 2018 00:38:47 -0800 Subject: [PATCH] ircd::http: Support view of full URI in the request::head; use in X-Matrix auth. --- include/ircd/http.h | 3 ++- ircd/http.cc | 6 ++++++ ircd/resource.cc | 10 +--------- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/include/ircd/http.h b/include/ircd/http.h index 385c023ca..e175fa776 100644 --- a/include/ircd/http.h +++ b/include/ircd/http.h @@ -286,7 +286,8 @@ struct ircd::http::request::head string_view user_agent; size_t content_length {0}; - string_view headers; + string_view uri; // full view of (path, query, fragmet) + string_view headers; // full view of all headers head(parse::capstan &pc, const headers::closure &c = {}); head() = default; diff --git a/ircd/http.cc b/ircd/http.cc index f7a247bf4..0ea319176 100644 --- a/ircd/http.cc +++ b/ircd/http.cc @@ -296,6 +296,12 @@ ircd::http::request::request(stream_buffer &out, ircd::http::request::head::head(parse::capstan &pc, const headers::closure &c) :line::request{pc} +,uri +{ + fragment? string_view { begin(path), end(fragment) }: + query? string_view { begin(path), end(query) }: + string_view { begin(path), end(path) } +} ,headers { http::headers{pc, [this, &c](const auto &h) diff --git a/ircd/resource.cc b/ircd/resource.cc index 7172c18ca..9ef34182b 100644 --- a/ircd/resource.cc +++ b/ircd/resource.cc @@ -175,14 +175,6 @@ ircd::verify_origin(client &client, resource::request &request) try { - const fmt::bsprintf<1024> uri - { - "%s%s%s", - request.head.path, - request.query? "?" : "", - request.query - }; - const m::request::x_matrix x_matrix { request.head.authorization @@ -190,7 +182,7 @@ try const m::request object { - x_matrix.origin, my_host(), method.name, uri, request.content + x_matrix.origin, my_host(), method.name, request.head.uri, request.content }; const auto verified