aboutsummaryrefslogtreecommitdiff
path: root/src/imap/ngx_imap.h
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2005-07-08 14:34:20 +0000
committerIgor Sysoev <igor@sysoev.ru>2005-07-08 14:34:20 +0000
commit5192b3651f2f44fb5769828a2a4060989c7e9c5f (patch)
treed1ef9dfd855e836c6f05b496be88dc835537d03f /src/imap/ngx_imap.h
parent549c6c644976dc694765d77110ebd2504ff7ce2b (diff)
downloadnginx-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.h63
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);