Annotation of embedaddon/php/sapi/cgi/fastcgi.h, revision 1.1.1.1
1.1 misho 1: /*
2: +----------------------------------------------------------------------+
3: | PHP Version 5 |
4: +----------------------------------------------------------------------+
5: | Copyright (c) 1997-2012 The PHP Group |
6: +----------------------------------------------------------------------+
7: | This source file is subject to version 3.01 of the PHP license, |
8: | that is bundled with this package in the file LICENSE, and is |
9: | available through the world-wide-web at the following url: |
10: | http://www.php.net/license/3_01.txt |
11: | If you did not receive a copy of the PHP license and are unable to |
12: | obtain it through the world-wide-web, please send a note to |
13: | license@php.net so we can mail you a copy immediately. |
14: +----------------------------------------------------------------------+
15: | Authors: Dmitry Stogov <dmitry@zend.com> |
16: +----------------------------------------------------------------------+
17: */
18:
19: /* $Id: fastcgi.h 321634 2012-01-01 13:15:04Z felipe $ */
20:
21: /* FastCGI protocol */
22:
23: #define FCGI_VERSION_1 1
24:
25: #define FCGI_MAX_LENGTH 0xffff
26:
27: #define FCGI_KEEP_CONN 1
28:
29: typedef enum _fcgi_role {
30: FCGI_RESPONDER = 1,
31: FCGI_AUTHORIZER = 2,
32: FCGI_FILTER = 3
33: } fcgi_role;
34:
35: typedef enum _fcgi_request_type {
36: FCGI_BEGIN_REQUEST = 1, /* [in] */
37: FCGI_ABORT_REQUEST = 2, /* [in] (not supported) */
38: FCGI_END_REQUEST = 3, /* [out] */
39: FCGI_PARAMS = 4, /* [in] environment variables */
40: FCGI_STDIN = 5, /* [in] post data */
41: FCGI_STDOUT = 6, /* [out] response */
42: FCGI_STDERR = 7, /* [out] errors */
43: FCGI_DATA = 8, /* [in] filter data (not supported) */
44: FCGI_GET_VALUES = 9, /* [in] */
45: FCGI_GET_VALUES_RESULT = 10 /* [out] */
46: } fcgi_request_type;
47:
48: typedef enum _fcgi_protocol_status {
49: FCGI_REQUEST_COMPLETE = 0,
50: FCGI_CANT_MPX_CONN = 1,
51: FCGI_OVERLOADED = 2,
52: FCGI_UNKNOWN_ROLE = 3
53: } dcgi_protocol_status;
54:
55: typedef struct _fcgi_header {
56: unsigned char version;
57: unsigned char type;
58: unsigned char requestIdB1;
59: unsigned char requestIdB0;
60: unsigned char contentLengthB1;
61: unsigned char contentLengthB0;
62: unsigned char paddingLength;
63: unsigned char reserved;
64: } fcgi_header;
65:
66: typedef struct _fcgi_begin_request {
67: unsigned char roleB1;
68: unsigned char roleB0;
69: unsigned char flags;
70: unsigned char reserved[5];
71: } fcgi_begin_request;
72:
73: typedef struct _fcgi_begin_request_rec {
74: fcgi_header hdr;
75: fcgi_begin_request body;
76: } fcgi_begin_request_rec;
77:
78: typedef struct _fcgi_end_request {
79: unsigned char appStatusB3;
80: unsigned char appStatusB2;
81: unsigned char appStatusB1;
82: unsigned char appStatusB0;
83: unsigned char protocolStatus;
84: unsigned char reserved[3];
85: } fcgi_end_request;
86:
87: typedef struct _fcgi_end_request_rec {
88: fcgi_header hdr;
89: fcgi_end_request body;
90: } fcgi_end_request_rec;
91:
92: /* FastCGI client API */
93:
94: typedef struct _fcgi_request {
95: int listen_socket;
96: #ifdef _WIN32
97: int tcp;
98: #endif
99: int fd;
100: int id;
101: int keep;
102: int closed;
103:
104: int in_len;
105: int in_pad;
106:
107: fcgi_header *out_hdr;
108: unsigned char *out_pos;
109: unsigned char out_buf[1024*8];
110: unsigned char reserved[sizeof(fcgi_end_request_rec)];
111:
112: HashTable *env;
113: } fcgi_request;
114:
115: int fcgi_init(void);
116: void fcgi_shutdown(void);
117: int fcgi_is_fastcgi(void);
118: int fcgi_in_shutdown(void);
119: int fcgi_listen(const char *path, int backlog);
120: void fcgi_init_request(fcgi_request *req, int listen_socket);
121: int fcgi_accept_request(fcgi_request *req);
122: int fcgi_finish_request(fcgi_request *req, int force_close);
123:
124: char* fcgi_getenv(fcgi_request *req, const char* var, int var_len);
125: char* fcgi_putenv(fcgi_request *req, char* var, int var_len, char* val);
126:
127: int fcgi_read(fcgi_request *req, char *str, int len);
128:
129: int fcgi_write(fcgi_request *req, fcgi_request_type type, const char *str, int len);
130: int fcgi_flush(fcgi_request *req, int close);
131:
132: #ifdef PHP_WIN32
133: void fcgi_impersonate(void);
134: #endif
135:
136: void fcgi_set_mgmt_var(const char * name, size_t name_len, const char * value, size_t value_len);
137: void fcgi_free_mgmt_var_cb(void * ptr);
138:
139: /*
140: * Local variables:
141: * tab-width: 4
142: * c-basic-offset: 4
143: * End:
144: * vim600: sw=4 ts=4 fdm=marker
145: * vim<600: sw=4 ts=4
146: */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>