Author: rhuijben Date: Sat Oct 17 15:12:57 2015 New Revision: 1709183 URL: http://svn.apache.org/viewvc?rev=1709183&view=rev Log: In preparation for adding more http2 code, add the predefined HTTP2 errors to the serf error range. The HTTP2 specification documents that certain errors MUST be generated in certain error conditions, so we will need to map these errors if we ever want to conform to this spec.
* serf-dev/dev/context.c (serf_error_string): Add messages for the new errors. Loosely copied from RFC 7540. * serf-dev/dev/serf.h (SERF_ERROR_HTTP2_NO_ERROR SERF_ERROR_HTTP2_PROTOCOL_ERROR, SERF_ERROR_HTTP2_INTERNAL_ERROR, SERF_ERROR_HTTP2_FLOW_CONTROL_ERROR, SERF_ERROR_HTTP2_SETTINGS_TIMEOUT, SERF_ERROR_HTTP2_STREAM_CLOSED, SERF_ERROR_HTTP2_FRAME_SIZE_ERROR, SERF_ERROR_HTTP2_REFUSED_STREAM, SERF_ERROR_HTTP2_CANCEL, SERF_ERROR_HTTP2_COMPRESSION_ERROR, SERF_ERROR_HTTP2_CONNECT_ERROR, SERF_ERROR_HTTP2_ENHANCE_YOUR_CALM, SERF_ERROR_HTTP2_INADEQUATE_SECURITY, SERF_ERROR_HTTP2_HTTP_1_1_REQUIRED): New defines. Modified: serf/trunk/context.c serf/trunk/serf.h Modified: serf/trunk/context.c URL: http://svn.apache.org/viewvc/serf/trunk/context.c?rev=1709183&r1=1709182&r2=1709183&view=diff ============================================================================== --- serf/trunk/context.c (original) +++ serf/trunk/context.c Sat Oct 17 15:12:57 2015 @@ -408,6 +408,36 @@ const char *serf_error_string(apr_status case SERF_ERROR_SSLTUNNEL_SETUP_FAILED: return "The proxy server returned an error while setting up the " "SSL tunnel."; + + /* HTTP2 protocol errors */ + case SERF_ERROR_HTTP2_NO_ERROR: + return "HTTP2: Graceful shutdown"; + case SERF_ERROR_HTTP2_PROTOCOL_ERROR: + return "HTTP2 protocol error detected"; + case SERF_ERROR_HTTP2_INTERNAL_ERROR: + return "HTTP2 internal error"; + case SERF_ERROR_HTTP2_FLOW_CONTROL_ERROR: + return "HTTP2 flow control limits exceeded"; + case SERF_ERROR_HTTP2_SETTINGS_TIMEOUT: + return "HTTP2 settings not acknowledged"; + case SERF_ERROR_HTTP2_STREAM_CLOSED: + return "HTTP2 frame received for closed stream"; + case SERF_ERROR_HTTP2_FRAME_SIZE_ERROR: + return "HTTP2 frame size incorrect"; + case SERF_ERROR_HTTP2_REFUSED_STREAM: + return "HTTP2 stream not processed"; + case SERF_ERROR_HTTP2_CANCEL: + return "HTTP2 stream cancelled"; + case SERF_ERROR_HTTP2_COMPRESSION_ERROR: + return "HTTP2 compression state not updated"; + case SERF_ERROR_HTTP2_CONNECT_ERROR: + return "TCP connection error for HTTP2 connect method"; + case SERF_ERROR_HTTP2_ENHANCE_YOUR_CALM: + return "HTTP2 processing capacity exceeded"; + case SERF_ERROR_HTTP2_INADEQUATE_SECURITY: + return "HTTP2 negotiated TLS parameters not acceptable"; + case SERF_ERROR_HTTP2_HTTP_1_1_REQUIRED: + return "HTTP 1.1 is required for this request"; default: return NULL; } Modified: serf/trunk/serf.h URL: http://svn.apache.org/viewvc/serf/trunk/serf.h?rev=1709183&r1=1709182&r2=1709183&view=diff ============================================================================== --- serf/trunk/serf.h (original) +++ serf/trunk/serf.h Sat Oct 17 15:12:57 2015 @@ -108,6 +108,22 @@ typedef struct serf_config_t serf_config /* The connection to the server timed out. */ #define SERF_ERROR_CONNECTION_TIMEDOUT (SERF_ERROR_START + 12) +/* Http-2 stream errors, mapped into our error range */ +#define SERF_ERROR_HTTP2_NO_ERROR (SERF_ERROR_START + 50) +#define SERF_ERROR_HTTP2_PROTOCOL_ERROR (SERF_ERROR_START + 51) +#define SERF_ERROR_HTTP2_INTERNAL_ERROR (SERF_ERROR_START + 52) +#define SERF_ERROR_HTTP2_FLOW_CONTROL_ERROR (SERF_ERROR_START + 53) +#define SERF_ERROR_HTTP2_SETTINGS_TIMEOUT (SERF_ERROR_START + 54) +#define SERF_ERROR_HTTP2_STREAM_CLOSED (SERF_ERROR_START + 55) +#define SERF_ERROR_HTTP2_FRAME_SIZE_ERROR (SERF_ERROR_START + 56) +#define SERF_ERROR_HTTP2_REFUSED_STREAM (SERF_ERROR_START + 57) +#define SERF_ERROR_HTTP2_CANCEL (SERF_ERROR_START + 58) +#define SERF_ERROR_HTTP2_COMPRESSION_ERROR (SERF_ERROR_START + 59) +#define SERF_ERROR_HTTP2_CONNECT_ERROR (SERF_ERROR_START + 60) +#define SERF_ERROR_HTTP2_ENHANCE_YOUR_CALM (SERF_ERROR_START + 61) +#define SERF_ERROR_HTTP2_INADEQUATE_SECURITY (SERF_ERROR_START + 62) +#define SERF_ERROR_HTTP2_HTTP_1_1_REQUIRED (SERF_ERROR_START + 63) + /* SSL certificates related errors */ #define SERF_ERROR_SSL_CERT_FAILED (SERF_ERROR_START + 70)