Skip to content

Server request boundaries ​

These limits apply to the HTTP entry point of respire-server serve. They bound transport work without changing authentication or synchronization semantics.

VariableDefaultPurpose
RSRS_MAX_BODY_BYTES8,388,608Maximum request body size
RSRS_HEADER_TIMEOUT_MS10,000Header deadline
RSRS_BODY_TIMEOUT_MS30,000Body deadline
RSRS_CONNECTION_TIMEOUT_MS70,000Absolute connection deadline, including response writing
RSRS_MAX_CONNECTIONS64Maximum live connections and associated database tasks

Configured values must be positive decimal integers. Invalid configuration fails before listening; capacity and platform bounds are also checked.

flowchart LR
  TCP["Accepted connection"] --> Capacity["Capacity permit"]
  Capacity --> Headers["Header deadline"]
  Headers --> Body["Body size + deadline"]
  Body --> DB["Bounded Postgres worker"]
  DB --> Reply["Response within connection deadline"]
Input / eventResult
Body exceeds limit413; does not enter database handling
Body equals limitAccepted by transport; normal validation still applies
Chunked bodyEnforced cumulative size limit
Truncated or malformed requestExplicit failure, not an empty successful request
Body deadline exceeded408 or connection failure
Capacity exhaustedConnection rejected rather than queued without bounds
Database unavailable503 where reported by the API; not a false authentication failure

A connection timeout closes the socket; it does not roll back database work that has already begun. The server does not automatically replay a request with an uncertain commit outcome.

Logs ​

Logs contain bounded diagnostics such as method, path, status and duration. They exclude request bodies, authorization headers, password hashes, salts, session tokens and query strings.

These transport limits do not replace a reverse proxy, deployment-specific rate limits or backup procedures. See server and deployment.