MINOR: mux-h1: Set error code if possible when MUX_EXIT_STATUS is returned
In h1_ctl(), if output parameter is provided when MUX_EXIT_STATUS is
returned, it is used to set the error code. In addition, any client errors
(4xx), except for 408 ones, are handled as invalid errors
(MUX_ES_INVALID_ERR). This way, it will be possible to customize the parsing
error code for request messages.
diff --git a/src/mux_h1.c b/src/mux_h1.c
index 2857545..7d7158f 100644
--- a/src/mux_h1.c
+++ b/src/mux_h1.c
@@ -3541,10 +3541,12 @@
ret |= MUX_STATUS_READY;
return ret;
case MUX_EXIT_STATUS:
- ret = (h1c->errcode == 400 ? MUX_ES_INVALID_ERR :
- (h1c->errcode == 408 ? MUX_ES_TOUT_ERR :
- (h1c->errcode == 501 ? MUX_ES_NOTIMPL_ERR :
- (h1c->errcode == 500 ? MUX_ES_INTERNAL_ERR :
+ if (output)
+ *((int *)output) = h1c->errcode;
+ ret = (h1c->errcode == 408 ? MUX_ES_TOUT_ERR :
+ (h1c->errcode == 501 ? MUX_ES_NOTIMPL_ERR :
+ (h1c->errcode == 500 ? MUX_ES_INTERNAL_ERR :
+ ((h1c->errcode >= 400 && h1c->errcode <= 499) ? MUX_ES_INVALID_ERR :
MUX_ES_SUCCESS))));
return ret;
default: