diff options
author | Igor Sysoev <igor@sysoev.ru> | 2005-07-08 14:34:20 +0000 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2005-07-08 14:34:20 +0000 |
commit | 5192b3651f2f44fb5769828a2a4060989c7e9c5f (patch) | |
tree | d1ef9dfd855e836c6f05b496be88dc835537d03f /src/imap/ngx_imap.h | |
parent | 549c6c644976dc694765d77110ebd2504ff7ce2b (diff) | |
download | nginx-release-0.1.38.tar.gz nginx-release-0.1.38.zip |
nginx-0.1.38-RELEASE importrelease-0.1.38
*) Feature: the "limit_rate" directive is supported in in proxy and
FastCGI mode.
*) Feature: the "X-Accel-Limit-Rate" response header line is supported
in proxy and FastCGI mode.
*) Feature: the "break" directive.
*) Feature: the "log_not_found" directive.
*) Bugfix: the response status code was not changed when request was
redirected by the ""X-Accel-Redirect" header line.
*) Bugfix: the variables set by the "set" directive could not be used
in SSI.
*) Bugfix: the segmentation fault may occurred if the SSI page has more
than one remote subrequest.
*) Bugfix: nginx treated the backend response as invalid if the status
line in the header was transferred in two packets; the bug had
appeared in 0.1.29.
*) Feature: the "ssi_types" directive.
*) Feature: the "autoindex_exact_size" directive.
*) Bugfix: the ngx_http_autoindex_module did not support the long file
names in UTF-8.
*) Feature: the IMAP/POP3 proxy.
Diffstat (limited to 'src/imap/ngx_imap.h')
-rw-r--r-- | src/imap/ngx_imap.h | 63 |
1 files changed, 49 insertions, 14 deletions
diff --git a/src/imap/ngx_imap.h b/src/imap/ngx_imap.h index 5ba390055..8a506db64 100644 --- a/src/imap/ngx_imap.h +++ b/src/imap/ngx_imap.h @@ -36,6 +36,12 @@ typedef struct { ngx_uint_t protocol; + ngx_buf_t *pop3_capability; + ngx_buf_t *imap_capability; + + ngx_array_t pop3_capabilities; + ngx_array_t imap_capabilities; + /* server ctx */ ngx_imap_conf_ctx_t *ctx; } ngx_imap_core_srv_conf_t; @@ -51,11 +57,20 @@ typedef struct { typedef enum { - ngx_pop3_start = 0, - ngx_pop3_user + ngx_imap_start = 0, + ngx_imap_login, + ngx_imap_user, + ngx_imap_passwd, } ngx_imap_state_e; +typedef enum { + ngx_pop3_start = 0, + ngx_pop3_user, + ngx_pop3_passwd +} ngx_po3_state_e; + + typedef struct { ngx_peer_connection_t upstream; ngx_buf_t *buffer; @@ -68,6 +83,7 @@ typedef struct { ngx_connection_t *connection; ngx_buf_t *buffer; + ngx_str_t out; void **ctx; void **main_conf; @@ -75,39 +91,55 @@ typedef struct { ngx_imap_proxy_ctx_t *proxy; - ngx_imap_state_e imap_state; + ngx_uint_t imap_state; unsigned protocol:1; + unsigned quoted:1; ngx_str_t login; ngx_str_t passwd; + ngx_str_t tag; + ngx_uint_t command; ngx_array_t args; + ngx_uint_t login_attempt; + /* used to parse IMAP/POP3 command */ ngx_uint_t state; + u_char *cmd_start; u_char *arg_start; u_char *arg_end; + ngx_uint_t literal_len; } ngx_imap_session_t; #define NGX_POP3_USER 1 #define NGX_POP3_PASS 2 -#define NGX_POP3_APOP 3 -#define NGX_POP3_STAT 4 -#define NGX_POP3_LIST 5 -#define NGX_POP3_RETR 6 -#define NGX_POP3_DELE 7 -#define NGX_POP3_NOOP 8 -#define NGX_POP3_RSET 9 -#define NGX_POP3_TOP 10 -#define NGX_POP3_UIDL 11 -#define NGX_POP3_QUIT 12 +#define NGX_POP3_CAPA 3 +#define NGX_POP3_QUIT 4 +#define NGX_POP3_NOOP 5 +#define NGX_POP3_APOP 6 +#define NGX_POP3_STAT 7 +#define NGX_POP3_LIST 8 +#define NGX_POP3_RETR 9 +#define NGX_POP3_DELE 10 +#define NGX_POP3_RSET 11 +#define NGX_POP3_TOP 12 +#define NGX_POP3_UIDL 13 + + +#define NGX_IMAP_LOGIN 1 +#define NGX_IMAP_LOGOUT 2 +#define NGX_IMAP_CAPABILITY 3 +#define NGX_IMAP_NOOP 4 + +#define NGX_IMAP_NEXT 5 -#define NGX_IMAP_PARSE_INVALID_COMMAND 10 +#define NGX_IMAP_PARSE_INVALID_COMMAND 20 #define NGX_IMAP_PROXY_INVALID 10 @@ -135,9 +167,12 @@ typedef struct { void ngx_imap_init_connection(ngx_connection_t *c); +void ngx_imap_auth_state(ngx_event_t *rev); +void ngx_pop3_auth_state(ngx_event_t *rev); void ngx_imap_close_connection(ngx_connection_t *c); void ngx_imap_session_internal_server_error(ngx_imap_session_t *s); +ngx_int_t ngx_imap_parse_command(ngx_imap_session_t *s); ngx_int_t ngx_pop3_parse_command(ngx_imap_session_t *s); |