Re: Timeout Status Code

Tim Berners-Lee (timbl@www3.cern.ch)
Mon, 13 Jun 94 16:11:04 +0200


> Date: Mon, 13 Jun 1994 14:29:02 +0200
> From: John C. Mallery <JCMa@reagan.ai.mit.edu>
>

> 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.

Tim
________________________________________________________________

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;