| /* |
| * 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. |
| */ |
| |
| #ifndef FCGID_PROTOCOL_H |
| #define FCGID_PROTOCOL_H |
| |
| /* |
| * Listening socket file number |
| */ |
| #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; |
| |
| /* |
| * 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; |
| |
| /* |
| * 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 |
| |
| /* |
| * 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" |
| |
| int init_header(int type, int requestId, apr_size_t contentLength, |
| apr_size_t paddingLength, FCGI_Header * header); |
| |
| int build_begin_block(int role, request_rec * r, |
| apr_bucket_alloc_t * alloc, |
| apr_bucket_brigade * request_brigade); |
| |
| int build_env_block(request_rec * r, char **envp, |
| apr_bucket_alloc_t * alloc, |
| apr_bucket_brigade * request_brigade); |
| #endif |