fix: HEAD requests should produce METHOD_NOT_ALLOWED
This commit is contained in:
parent
2231a69b4c
commit
7c98ba64aa
3 changed files with 15 additions and 16 deletions
|
@ -87,10 +87,7 @@ pub async fn set_room_visibility_route(
|
||||||
|
|
||||||
if !services().rooms.metadata.exists(&body.room_id)? {
|
if !services().rooms.metadata.exists(&body.room_id)? {
|
||||||
// Return 404 if the room doesn't exist
|
// Return 404 if the room doesn't exist
|
||||||
return Err(Error::BadRequest(
|
return Err(Error::BadRequest(ErrorKind::NotFound, "Room not found"));
|
||||||
ErrorKind::NotFound,
|
|
||||||
"Room not found",
|
|
||||||
));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
match &body.visibility {
|
match &body.visibility {
|
||||||
|
@ -116,13 +113,9 @@ pub async fn set_room_visibility_route(
|
||||||
pub async fn get_room_visibility_route(
|
pub async fn get_room_visibility_route(
|
||||||
body: Ruma<get_room_visibility::v3::IncomingRequest>,
|
body: Ruma<get_room_visibility::v3::IncomingRequest>,
|
||||||
) -> Result<get_room_visibility::v3::Response> {
|
) -> Result<get_room_visibility::v3::Response> {
|
||||||
|
|
||||||
if !services().rooms.metadata.exists(&body.room_id)? {
|
if !services().rooms.metadata.exists(&body.room_id)? {
|
||||||
// Return 404 if the room doesn't exist
|
// Return 404 if the room doesn't exist
|
||||||
return Err(Error::BadRequest(
|
return Err(Error::BadRequest(ErrorKind::NotFound, "Room not found"));
|
||||||
ErrorKind::NotFound,
|
|
||||||
"Room not found",
|
|
||||||
));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(get_room_visibility::v3::Response {
|
Ok(get_room_visibility::v3::Response {
|
||||||
|
|
|
@ -905,7 +905,7 @@ async fn sync_helper(
|
||||||
let leave_shortstatekey = services()
|
let leave_shortstatekey = services()
|
||||||
.rooms
|
.rooms
|
||||||
.short
|
.short
|
||||||
.get_or_create_shortstatekey(&StateEventType::RoomMember, &sender_user.as_str())?;
|
.get_or_create_shortstatekey(&StateEventType::RoomMember, sender_user.as_str())?;
|
||||||
|
|
||||||
left_state_ids.insert(leave_shortstatekey, left_event_id);
|
left_state_ids.insert(leave_shortstatekey, left_event_id);
|
||||||
|
|
||||||
|
|
18
src/main.rs
18
src/main.rs
|
@ -24,10 +24,13 @@ use figment::{
|
||||||
};
|
};
|
||||||
use http::{
|
use http::{
|
||||||
header::{self, HeaderName},
|
header::{self, HeaderName},
|
||||||
Method, Uri,
|
Method, StatusCode, Uri,
|
||||||
};
|
};
|
||||||
use opentelemetry::trace::{FutureExt, Tracer};
|
use opentelemetry::trace::{FutureExt, Tracer};
|
||||||
use ruma::api::{client::error::ErrorKind, IncomingRequest};
|
use ruma::api::{
|
||||||
|
client::{error::Error as RumaError, error::ErrorKind, uiaa::UiaaResponse},
|
||||||
|
IncomingRequest,
|
||||||
|
};
|
||||||
use tokio::signal;
|
use tokio::signal;
|
||||||
use tower::ServiceBuilder;
|
use tower::ServiceBuilder;
|
||||||
use tower_http::{
|
use tower_http::{
|
||||||
|
@ -191,15 +194,18 @@ async fn run_server() -> io::Result<()> {
|
||||||
async fn unrecognized_method<B>(
|
async fn unrecognized_method<B>(
|
||||||
req: axum::http::Request<B>,
|
req: axum::http::Request<B>,
|
||||||
next: axum::middleware::Next<B>,
|
next: axum::middleware::Next<B>,
|
||||||
) -> std::result::Result<axum::response::Response, axum::http::StatusCode> {
|
) -> std::result::Result<axum::response::Response, StatusCode> {
|
||||||
let method = req.method().clone();
|
let method = req.method().clone();
|
||||||
let uri = req.uri().clone();
|
let uri = req.uri().clone();
|
||||||
let inner = next.run(req).await;
|
let inner = next.run(req).await;
|
||||||
if inner.status() == axum::http::StatusCode::METHOD_NOT_ALLOWED {
|
if inner.status() == axum::http::StatusCode::METHOD_NOT_ALLOWED {
|
||||||
warn!("Method not allowed: {method} {uri}");
|
warn!("Method not allowed: {method} {uri}");
|
||||||
return Ok(
|
return Ok(RumaResponse(UiaaResponse::MatrixError(RumaError {
|
||||||
Error::BadRequest(ErrorKind::Unrecognized, "Unrecognized request").into_response(),
|
kind: ErrorKind::Unrecognized,
|
||||||
);
|
message: "M_UNRECOGNIZED: Unrecognized request".to_owned(),
|
||||||
|
status_code: StatusCode::METHOD_NOT_ALLOWED,
|
||||||
|
}))
|
||||||
|
.into_response());
|
||||||
}
|
}
|
||||||
Ok(inner)
|
Ok(inner)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue