Re: Timeout Status Code

Tim Berners-Lee <>
Date: Mon, 13 Jun 1994 16:15:09 +0200
Message-id: <>
Precedence: bulk
From: Tim Berners-Lee <>
To: Multiple recipients of list <>
Subject: Re: Timeout Status Code
X-Listprocessor-Version: 6.0c -- ListProcessor by Anastasios Kotsikonas
> Date: Mon, 13 Jun 1994 14:29:02 +0200
> From: John C. Mallery <>

> We need a status code for internal use in clients and servers when a
> connection times out before the transaction is complete.

We should distinguish betweeninternal client codes and codes sent
across the net. The HTTP status codes are sent over the net and
have a significance only in the context of the HTTP transaction.
So for example, if a client requests from a proxy which goes
out to a server, and the connection between the proxy and the
server times  out, then from the point of view of the primary
connection between the client and the proxy, the return code
should be something like

500 Something went wrong: underlying service timed out

with an explanatory message including ifnromation about the
actual error, for diagnostic purposes.  If the proxy has a code
for "timeout", then it would need codes for all the N things
which can happen to underlying services, from core dumps to
ball lightning.

If you want codes in the client locally for passing back the
fact that an HTTP or other protocol has timed out, then the
appropriate thing is the HTError.h system, which allows
a stack of errors to be generated, tracing cause to effect.
Each element on the satck has an error number (which
could be translated into your favourite language message)
and few other bits.  Some of the errors correpond to
HTTP response codes. Others, like HTERR_TIME_OUT, do not.
Sounds like   HTERR_TIME_OUT might be what you want.


typedef struct _HTErrorInfo {
    int                 handle;         /* Unique number in this stack */
    HTErrorElement      element;        /* Index number into HTErrorMsgInfo  
    HTErrSeverity       severity;       /* A la VMS */
    BOOL                ignore;         /* YES if msg should not go to user  
    void *              par;            /* Explanation, e.g. filename  */
    unsigned int        par_length;     /* For copying by generic routine */
    char *              where;          /* Which function */
} HTErrorInfo;