| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| /* |
| Header file declaring FCGI Specification |
| More info @http://www.mit.edu/~yandros/doc/specs/fcgi-spec.html |
| */ |
| |
| #pragma once |
| |
| #define FCGI_LISTENSOCK_FILENO 0 |
| |
| typedef struct { |
| unsigned char version; |
| unsigned char type; |
| unsigned char requestIdB1; |
| unsigned char requestIdB0; |
| unsigned char contentLengthB1; |
| unsigned char contentLengthB0; |
| unsigned char paddingLength; |
| unsigned char reserved; |
| } FCGI_Header; |
| |
| #define FCGI_MAX_LENGTH 0xffff |
| |
| /* |
| * Number of bytes in a FCGI_Header. Future versions of the protocol |
| * will not reduce this number. |
| */ |
| #define FCGI_HEADER_LEN 8 |
| |
| /* |
| * Value for version component of FCGI_Header |
| */ |
| #define FCGI_VERSION_1 1 |
| |
| /* |
| * Values for type component of FCGI_Header |
| */ |
| #define FCGI_BEGIN_REQUEST 1 |
| #define FCGI_ABORT_REQUEST 2 |
| #define FCGI_END_REQUEST 3 |
| #define FCGI_PARAMS 4 |
| #define FCGI_STDIN 5 |
| #define FCGI_STDOUT 6 |
| #define FCGI_STDERR 7 |
| #define FCGI_DATA 8 |
| #define FCGI_GET_VALUES 9 |
| #define FCGI_GET_VALUES_RESULT 10 |
| #define FCGI_UNKNOWN_TYPE 11 |
| #define FCGI_MAXTYPE (FCGI_UNKNOWN_TYPE) |
| |
| /* |
| * Value for requestId component of FCGI_Header |
| */ |
| #define FCGI_NULL_REQUEST_ID 0 |
| |
| typedef struct { |
| unsigned char roleB1; |
| unsigned char roleB0; |
| unsigned char flags; |
| unsigned char reserved[5]; |
| } FCGI_BeginRequestBody; |
| |
| typedef struct { |
| FCGI_Header *header; |
| FCGI_BeginRequestBody *body; |
| } FCGI_BeginRequest; |
| |
| /* |
| * Mask for flags component of FCGI_BeginRequestBody |
| */ |
| #define FCGI_KEEP_CONN 1 |
| |
| /* |
| * Values for role component of FCGI_BeginRequestBody |
| */ |
| #define FCGI_RESPONDER 1 |
| #define FCGI_AUTHORIZER 2 |
| #define FCGI_FILTER 3 |
| |
| typedef struct { |
| unsigned char appStatusB3; |
| unsigned char appStatusB2; |
| unsigned char appStatusB1; |
| unsigned char appStatusB0; |
| unsigned char protocolStatus; |
| unsigned char reserved[3]; |
| } FCGI_EndRequestBody; |
| |
| typedef struct { |
| FCGI_Header header; |
| FCGI_EndRequestBody body; |
| } FCGI_EndRequest; |
| |
| /* |
| * Values for protocolStatus component of FCGI_EndRequestBody |
| */ |
| #define FCGI_REQUEST_COMPLETE 0 |
| #define FCGI_CANT_MPX_CONN 1 |
| #define FCGI_OVERLOADED 2 |
| #define FCGI_UNKNOWN_ROLE 3 |
| |
| /* |
| * Variable names for FCGI_GET_VALUES / FCGI_GET_VALUES_RESULT records |
| */ |
| #define FCGI_MAX_CONNS "FCGI_MAX_CONNS" |
| #define FCGI_MAX_REQS "FCGI_MAX_REQS" |
| #define FCGI_MPXS_CONNS "FCGI_MPXS_CONNS" |
| |
| typedef struct { |
| unsigned char type; |
| unsigned char reserved[7]; |
| } FCGI_UnknownTypeBody; |
| |
| typedef struct { |
| FCGI_Header header; |
| FCGI_UnknownTypeBody body; |
| } FCGI_UnknownTypeRequest; |