Return a non-5xx status when trace fails to avoid proxy-generated 504 pages #172

Closed
opened 2026-10-05 02:01:48 +02:00 by adam · 0 comments
Owner

When a trace fails, RemoteTerm currently returns a 504 Gateway Timeout. This works fine when not behind a proxy, but Cloudflare sees that as an error between the gateway and application and shows its own error screen instead.

Maybe that error message could be changed to 422?

The HTTP 422 Unprocessable Content client error response status code indicates that the server understood the content type of the request content, and the syntax of the request content was correct, but it was unable to process the contained instructions.

I think that is more logical than 504, which indicates that a server in front of the app did not get a response in time from the upstream server. The proxy may think that means the proxy itself instead of the application.

Error message from failed trace behind Cloudflare:

Results
<!DOCTYPE html>
<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en-US"> <![endif]-->
<!--[if IE 7]> <html class="no-js ie7 oldie" lang="en-US"> <![endif]-->
<!--[if IE 8]> <html class="no-js ie8 oldie" lang="en-US"> <![endif]-->
<!--[if gt IE 8]><!-->
<html class="no-js" lang="en-US">
<!--<![endif]-->
<head>
  <title>[redacted domain] | 504: Gateway time-out</title>
  <meta charset="UTF-8" />
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
  <meta name="robots" content="noindex, nofollow" />
  <meta name="viewport" content="width=device-width,initial-scale=1" />
  <link rel="stylesheet" id="cf_styles-css" href="/cdn-cgi/styles/main.css" />
</head>
<body>
  <div id="cf-wrapper">
    <div id="cf-error-details" class="p-0">
      <header class="mx-auto pt-10 lg:pt-6 lg:px-8 w-240 lg:w-full mb-8">
        <h1 class="inline-block sm:block sm:mb-2 font-light text-60 lg:text-4xl text-black-dark leading-tight mr-2">
          <span class="inline-block">Gateway time-out</span>
          <span class="code-label">Error code 504</span>
        </h1>
        <div>
          Visit <a href="[redacted Cloudflare URL]" target="_blank" rel="noopener noreferrer">cloudflare.com</a>
          for more information.
        </div>
        <div class="mt-3">[redacted timestamp]</div>
      </header>

      <div class="my-8 bg-gradient-gray">
        <div class="w-240 lg:w-full mx-auto">
          <div class="clearfix md:px-8">
            <div id="cf-browser-status" class="relative w-1/3 md:w-full py-15 md:p-0 md:py-8 md:text-left md:border-solid md:border-0 md:border-b md:border-gray-400 overflow-hidden float-left md:float-none text-center">
              <div class="relative mb-10 md:m-0">
                <span class="cf-icon-browser block md:hidden h-20 bg-center bg-no-repeat"></span>
                <span class="cf-icon-ok w-12 h-12 absolute left-1/2 md:left-auto md:right-0 md:top-0 -ml-6 -bottom-4"></span>
              </div>
              <span class="md:block w-full truncate">You</span>
              <h3 class="md:inline-block mt-3 md:mt-0 text-2xl text-gray-600 font-light leading-1.3">
                Browser
              </h3>
              <span class="leading-1.3 text-2xl text-green-success">Working</span>
            </div>

            <div id="cf-cloudflare-status" class="relative w-1/3 md:w-full py-15 md:p-0 md:py-8 md:text-left md:border-solid md:border-0 md:border-b md:border-gray-400 overflow-hidden float-left md:float-none text-center">
              <div class="relative mb-10 md:m-0">
                <a href="[redacted Cloudflare URL]" target="_blank" rel="noopener noreferrer">
                  <span class="cf-icon-cloud block md:hidden h-20 bg-center bg-no-repeat"></span>
                  <span class="cf-icon-ok w-12 h-12 absolute left-1/2 md:left-auto md:right-0 md:top-0 -ml-6 -bottom-4"></span>
                </a>
              </div>
              <span class="md:block w-full truncate">[redacted location]</span>
              <h3 class="md:inline-block mt-3 md:mt-0 text-2xl text-gray-600 font-light leading-1.3">
                <a href="[redacted Cloudflare URL]" target="_blank" rel="noopener noreferrer">
                  Cloudflare
                </a>
              </h3>
              <span class="leading-1.3 text-2xl text-green-success">Working</span>
            </div>

            <div id="cf-host-status" class="cf-error-source relative w-1/3 md:w-full py-15 md:p-0 md:py-8 md:text-left md:border-solid md:border-0 md:border-b md:border-gray-400 overflow-hidden float-left md:float-none text-center">
              <div class="relative mb-10 md:m-0">
                <span class="cf-icon-server block md:hidden h-20 bg-center bg-no-repeat"></span>
                <span class="cf-icon-error w-12 h-12 absolute left-1/2 md:left-auto md:right-0 md:top-0 -ml-6 -bottom-4"></span>
              </div>
              <span class="md:block w-full truncate">[redacted host]</span>
              <h3 class="md:inline-block mt-3 md:mt-0 text-2xl text-gray-600 font-light leading-1.3">
                Host
              </h3>
              <span class="leading-1.3 text-2xl text-red-error">Error</span>
            </div>
          </div>
        </div>
      </div>

      <div class="w-240 lg:w-full mx-auto mb-8 lg:px-8">
        <div class="clearfix">
          <div class="w-1/2 md:w-full float-left pr-6 md:pb-10 md:pr-0 leading-relaxed">
            <h2 class="text-3xl font-normal leading-1.3 mb-4">What happened?</h2>
            <p>The web server reported a gateway time-out error.</p>
          </div>
          <div class="w-1/2 md:w-full float-left leading-relaxed">
            <h2 class="text-3xl font-normal leading-1.3 mb-4">What can I do?</h2>
            <p class="mb-6">Please try again in a few minutes.</p>
          </div>
        </div>
      </div>

      <div class="cf-error-footer cf-wrapper w-240 lg:w-full py-10 sm:py-4 sm:px-8 mx-auto text-center sm:text-left border-solid border-0 border-t border-gray-300">
        <p class="text-13">
          <span class="cf-footer-item sm:block sm:mb-1">
            Cloudflare Ray ID: <strong class="font-semibold">[redacted ray id]</strong>
          </span>
          <span class="cf-footer-separator sm:hidden">&bull;</span>
          <span id="cf-footer-item-ip" class="cf-footer-item hidden sm:block sm:mb-1">
            Your IP:
            <button type="button" id="cf-footer-ip-reveal" class="cf-footer-ip-reveal-btn">Click to reveal</button>
            <span class="hidden" id="cf-footer-ip">[redacted IP]</span>
            <span class="cf-footer-separator sm:hidden">&bull;</span>
          </span>
          <span class="cf-footer-item sm:block sm:mb-1">
            <span>Performance &amp; security by</span>
            <a rel="noopener noreferrer" href="[redacted Cloudflare URL]" id="brand_link" target="_blank">Cloudflare</a>
          </span>
        </p>
      </div>
    </div>
  </div>
</body>
</html>

<!-- github-sync-id:4361243857 -->
When a trace fails, RemoteTerm currently returns a `504 Gateway Timeout`. This works fine when not behind a proxy, but Cloudflare sees that as an error between the gateway and application and shows its own error screen instead. Maybe that error message could be changed to `422`? > The HTTP `422 Unprocessable Content` client error response status code indicates that the server understood the content type of the request content, and the syntax of the request content was correct, but it was unable to process the contained instructions. I think that is more logical than `504`, which indicates that a server in front of the app did not get a response in time from the upstream server. The proxy may think that means the proxy itself instead of the application. Error message from failed trace behind Cloudflare: ```html Results <!DOCTYPE html> <!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en-US"> <![endif]--> <!--[if IE 7]> <html class="no-js ie7 oldie" lang="en-US"> <![endif]--> <!--[if IE 8]> <html class="no-js ie8 oldie" lang="en-US"> <![endif]--> <!--[if gt IE 8]><!--> <html class="no-js" lang="en-US"> <!--<![endif]--> <head> <title>[redacted domain] | 504: Gateway time-out</title> <meta charset="UTF-8" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> <meta name="robots" content="noindex, nofollow" /> <meta name="viewport" content="width=device-width,initial-scale=1" /> <link rel="stylesheet" id="cf_styles-css" href="/cdn-cgi/styles/main.css" /> </head> <body> <div id="cf-wrapper"> <div id="cf-error-details" class="p-0"> <header class="mx-auto pt-10 lg:pt-6 lg:px-8 w-240 lg:w-full mb-8"> <h1 class="inline-block sm:block sm:mb-2 font-light text-60 lg:text-4xl text-black-dark leading-tight mr-2"> <span class="inline-block">Gateway time-out</span> <span class="code-label">Error code 504</span> </h1> <div> Visit <a href="[redacted Cloudflare URL]" target="_blank" rel="noopener noreferrer">cloudflare.com</a> for more information. </div> <div class="mt-3">[redacted timestamp]</div> </header> <div class="my-8 bg-gradient-gray"> <div class="w-240 lg:w-full mx-auto"> <div class="clearfix md:px-8"> <div id="cf-browser-status" class="relative w-1/3 md:w-full py-15 md:p-0 md:py-8 md:text-left md:border-solid md:border-0 md:border-b md:border-gray-400 overflow-hidden float-left md:float-none text-center"> <div class="relative mb-10 md:m-0"> <span class="cf-icon-browser block md:hidden h-20 bg-center bg-no-repeat"></span> <span class="cf-icon-ok w-12 h-12 absolute left-1/2 md:left-auto md:right-0 md:top-0 -ml-6 -bottom-4"></span> </div> <span class="md:block w-full truncate">You</span> <h3 class="md:inline-block mt-3 md:mt-0 text-2xl text-gray-600 font-light leading-1.3"> Browser </h3> <span class="leading-1.3 text-2xl text-green-success">Working</span> </div> <div id="cf-cloudflare-status" class="relative w-1/3 md:w-full py-15 md:p-0 md:py-8 md:text-left md:border-solid md:border-0 md:border-b md:border-gray-400 overflow-hidden float-left md:float-none text-center"> <div class="relative mb-10 md:m-0"> <a href="[redacted Cloudflare URL]" target="_blank" rel="noopener noreferrer"> <span class="cf-icon-cloud block md:hidden h-20 bg-center bg-no-repeat"></span> <span class="cf-icon-ok w-12 h-12 absolute left-1/2 md:left-auto md:right-0 md:top-0 -ml-6 -bottom-4"></span> </a> </div> <span class="md:block w-full truncate">[redacted location]</span> <h3 class="md:inline-block mt-3 md:mt-0 text-2xl text-gray-600 font-light leading-1.3"> <a href="[redacted Cloudflare URL]" target="_blank" rel="noopener noreferrer"> Cloudflare </a> </h3> <span class="leading-1.3 text-2xl text-green-success">Working</span> </div> <div id="cf-host-status" class="cf-error-source relative w-1/3 md:w-full py-15 md:p-0 md:py-8 md:text-left md:border-solid md:border-0 md:border-b md:border-gray-400 overflow-hidden float-left md:float-none text-center"> <div class="relative mb-10 md:m-0"> <span class="cf-icon-server block md:hidden h-20 bg-center bg-no-repeat"></span> <span class="cf-icon-error w-12 h-12 absolute left-1/2 md:left-auto md:right-0 md:top-0 -ml-6 -bottom-4"></span> </div> <span class="md:block w-full truncate">[redacted host]</span> <h3 class="md:inline-block mt-3 md:mt-0 text-2xl text-gray-600 font-light leading-1.3"> Host </h3> <span class="leading-1.3 text-2xl text-red-error">Error</span> </div> </div> </div> </div> <div class="w-240 lg:w-full mx-auto mb-8 lg:px-8"> <div class="clearfix"> <div class="w-1/2 md:w-full float-left pr-6 md:pb-10 md:pr-0 leading-relaxed"> <h2 class="text-3xl font-normal leading-1.3 mb-4">What happened?</h2> <p>The web server reported a gateway time-out error.</p> </div> <div class="w-1/2 md:w-full float-left leading-relaxed"> <h2 class="text-3xl font-normal leading-1.3 mb-4">What can I do?</h2> <p class="mb-6">Please try again in a few minutes.</p> </div> </div> </div> <div class="cf-error-footer cf-wrapper w-240 lg:w-full py-10 sm:py-4 sm:px-8 mx-auto text-center sm:text-left border-solid border-0 border-t border-gray-300"> <p class="text-13"> <span class="cf-footer-item sm:block sm:mb-1"> Cloudflare Ray ID: <strong class="font-semibold">[redacted ray id]</strong> </span> <span class="cf-footer-separator sm:hidden">&bull;</span> <span id="cf-footer-item-ip" class="cf-footer-item hidden sm:block sm:mb-1"> Your IP: <button type="button" id="cf-footer-ip-reveal" class="cf-footer-ip-reveal-btn">Click to reveal</button> <span class="hidden" id="cf-footer-ip">[redacted IP]</span> <span class="cf-footer-separator sm:hidden">&bull;</span> </span> <span class="cf-footer-item sm:block sm:mb-1"> <span>Performance &amp; security by</span> <a rel="noopener noreferrer" href="[redacted Cloudflare URL]" id="brand_link" target="_blank">Cloudflare</a> </span> </p> </div> </div> </div> </body> </html> <!-- github-sync-id:4361243857 -->
adam closed this issue 2026-10-05 02:01:48 +02:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: adam/Remote-Terminal-for-MeshCore#172