Download raw body.
relayd: set User-Agent for HTTP healthchecks
Hi,
Thanks a lot for this patch.
FWIW, I have applied it here (OpenBSD 7.8/amd64) and GoToSocial is now
pretty happy to reply to heartbeat with HTTP/200. I also applied it on
another relayd instance targetting httpd and it also does work without
any problem I could notice.
Cheers,
Joel C.
Le Thu, Feb 26, 2026 at 08:17:30AM +0100, Rafael Sadowski a écrit :
> Joel Carnat notice that GoToSocial does not like it when we sent no
> User-Agent and returns an HTTP/418. This simple diff adds User-Agent to
> all HTTP/HTTPS checks.
>
> As I see it, we use "User Agents" in other places (ftp,acme-client...).
> When I look at all my (aws) load balancers and checks, I get a user
> agent from all of them.
>
> diff --git a/usr.sbin/relayd/parse.y b/usr.sbin/relayd/parse.y
> index fcdfb8e92e3..44ec18cbcfc 100644
> --- a/usr.sbin/relayd/parse.y
> +++ b/usr.sbin/relayd/parse.y
> @@ -921,7 +921,7 @@ tablecheck : ICMP { table->conf.check = CHECK_ICMP; }
> YYERROR;
> }
> if (asprintf(&table->sendbuf,
> - "HEAD %s HTTP/1.%c\r\n%s\r\n",
> + "HEAD %s HTTP/1.%c\r\nUser-Agent: relayd\r\n%s\r\n",
> $2, strlen($3) ? '1' : '0', $3) == -1)
> fatal("asprintf");
> free($2);
> @@ -936,7 +936,7 @@ tablecheck : ICMP { table->conf.check = CHECK_ICMP; }
> }
> table->conf.check = CHECK_HTTP_DIGEST;
> if (asprintf(&table->sendbuf,
> - "GET %s HTTP/1.%c\r\n%s\r\n",
> + "GET %s HTTP/1.%c\r\nUser-Agent: relayd\r\n%s\r\n",
> $2, strlen($3) ? '1' : '0', $3) == -1)
> fatal("asprintf");
> free($2);
> diff --git a/usr.sbin/relayd/relayd.conf.5 b/usr.sbin/relayd/relayd.conf.5
> index 5ae11c5ac01..943926a448a 100644
> --- a/usr.sbin/relayd/relayd.conf.5
> +++ b/usr.sbin/relayd/relayd.conf.5
> @@ -279,6 +279,9 @@ If
> is specified, it is used as the
> .Dq Host:
> header to query a specific hostname at the target host.
> +A
> +.Dq User-Agent: relayd
> +header is always included in the request.
> To validate the HTTP return code, use this shell command:
> .Bd -literal -offset indent
> $ echo -n "HEAD <path> HTTP/1.0\er\en\er\en" | \e
relayd: set User-Agent for HTTP healthchecks