From 8ea99217656ed6d52edad9ea94452c4b66b4bd0c Mon Sep 17 00:00:00 2001 From: cloudhead Date: Fri, 1 Sep 2023 12:03:58 +0200 Subject: [PATCH] httpd: Better error output from git backend --- radicle-httpd/src/error.rs | 10 ++++++++-- radicle-httpd/src/git.rs | 6 ++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/radicle-httpd/src/error.rs b/radicle-httpd/src/error.rs index 8bd18ce0..0fb34a09 100644 --- a/radicle-httpd/src/error.rs +++ b/radicle-httpd/src/error.rs @@ -1,3 +1,5 @@ +use std::process::ExitStatus; + use axum::http; use axum::response::{IntoResponse, Response}; @@ -21,8 +23,12 @@ pub enum GitError { Id(#[from] radicle::identity::IdError), /// Git backend error. - #[error("backend error")] - Backend, + #[error("git-http-backend: exited with code {0}")] + BackendExited(ExitStatus), + + /// Git backend error. + #[error("git-http-backend: invalid header returned: {0:?}")] + BackendHeader(String), /// HeaderName error. #[error(transparent)] diff --git a/radicle-httpd/src/git.rs b/radicle-httpd/src/git.rs index 6b9a521d..385d756a 100644 --- a/radicle-httpd/src/git.rs +++ b/radicle-httpd/src/git.rs @@ -168,7 +168,7 @@ async fn git_http_backend( .or_insert_with(Vec::new) .push(value.to_string()); } else { - return Err(Error::Backend); + return Err(Error::BackendHeader(line)); } } @@ -191,12 +191,10 @@ async fn git_http_backend( Ok((status, headers, body)) } Ok(output) => { - tracing::error!("git-http-backend: exited with code {}", output.status); - if let Ok(output) = std::str::from_utf8(&output.stderr) { tracing::error!("git-http-backend: stderr: {}", output.trim_end()); } - Err(Error::Backend) + Err(Error::BackendExited(output.status)) } Err(err) => { panic!("failed to wait for git-http-backend: {err}");