Mercurial > hg > nginx
comparison src/imap/ngx_imap_handler.c @ 422:edaefb2a20fc
nginx-0.0.10-2004-09-12-00:22:11 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Sat, 11 Sep 2004 20:22:11 +0000 |
parents | 01456a419cf9 |
children | fda5987b188d |
comparison
equal
deleted
inserted
replaced
421:01456a419cf9 | 422:edaefb2a20fc |
---|---|
67 | 67 |
68 c->data = s; | 68 c->data = s; |
69 s->connection = c; | 69 s->connection = c; |
70 | 70 |
71 if (ngx_array_init(&s->args, c->pool, 2, sizeof(ngx_str_t)) == NGX_ERROR) { | 71 if (ngx_array_init(&s->args, c->pool, 2, sizeof(ngx_str_t)) == NGX_ERROR) { |
72 ngx_imap_close_connection(s->connection); | 72 ngx_imap_close_connection(c); |
73 return; | 73 return; |
74 } | 74 } |
75 | 75 |
76 size = /* STUB: pop3: 128, imap: configurable 4K default */ 128; | 76 size = /* STUB: pop3: 128, imap: configurable 4K default */ 128; |
77 | 77 |
78 s->buffer = ngx_create_temp_buf(s->connection->pool, size); | 78 s->buffer = ngx_create_temp_buf(c->pool, size); |
79 if (s->buffer == NULL) { | 79 if (s->buffer == NULL) { |
80 ngx_imap_close_connection(s->connection); | 80 ngx_imap_close_connection(c); |
81 return; | 81 return; |
82 } | 82 } |
83 | 83 |
84 c->read->event_handler = ngx_pop3_auth_state; | 84 c->read->event_handler = ngx_pop3_auth_state; |
85 | 85 |
87 } | 87 } |
88 | 88 |
89 | 89 |
90 static void ngx_pop3_auth_state(ngx_event_t *rev) | 90 static void ngx_pop3_auth_state(ngx_event_t *rev) |
91 { | 91 { |
92 ngx_uint_t quit; | |
93 u_char *text; | 92 u_char *text; |
94 ssize_t size; | 93 ssize_t size; |
95 ngx_int_t rc; | 94 ngx_int_t rc; |
95 ngx_uint_t quit; | |
96 ngx_str_t *arg; | |
96 ngx_connection_t *c; | 97 ngx_connection_t *c; |
97 ngx_imap_session_t *s; | 98 ngx_imap_session_t *s; |
98 | 99 |
99 c = rev->data; | 100 c = rev->data; |
100 s = c->data; | 101 s = c->data; |
121 switch (s->command) { | 122 switch (s->command) { |
122 | 123 |
123 case NGX_POP3_USER: | 124 case NGX_POP3_USER: |
124 if (s->args.nelts == 1) { | 125 if (s->args.nelts == 1) { |
125 s->imap_state = ngx_pop3_user; | 126 s->imap_state = ngx_pop3_user; |
127 | |
128 arg = s->args.elts; | |
129 s->login.len = arg[0].len; | |
130 s->login.data = ngx_palloc(c->pool, s->login.len + 1); | |
131 if (s->login.data == NULL) { | |
132 ngx_imap_close_connection(c); | |
133 return; | |
134 } | |
135 | |
136 ngx_cpystrn(s->login.data, arg[0].data, s->login.len + 1); | |
137 | |
138 ngx_log_debug1(NGX_LOG_DEBUG_IMAP, c->log, 0, | |
139 "pop3 login: \"%s\"", s->login.data); | |
140 | |
126 } else { | 141 } else { |
127 rc = NGX_IMAP_PARSE_INVALID_COMMAND; | 142 rc = NGX_IMAP_PARSE_INVALID_COMMAND; |
128 } | 143 } |
129 | 144 |
130 break; | 145 break; |
146 switch (s->command) { | 161 switch (s->command) { |
147 | 162 |
148 case NGX_POP3_PASS: | 163 case NGX_POP3_PASS: |
149 if (s->args.nelts == 1) { | 164 if (s->args.nelts == 1) { |
150 /* STUB */ s->imap_state = ngx_pop3_start; | 165 /* STUB */ s->imap_state = ngx_pop3_start; |
166 | |
167 arg = s->args.elts; | |
168 s->passwd.len = arg[0].len; | |
169 s->passwd.data = ngx_palloc(c->pool, s->passwd.len + 1); | |
170 if (s->passwd.data == NULL) { | |
171 ngx_imap_close_connection(c); | |
172 return; | |
173 } | |
174 | |
175 ngx_cpystrn(s->passwd.data, arg[0].data, s->passwd.len + 1); | |
176 | |
177 ngx_log_debug1(NGX_LOG_DEBUG_IMAP, c->log, 0, | |
178 "pop3 passwd: \"%s\"", s->passwd.data); | |
179 | |
180 s->buffer->pos = s->buffer->start; | |
181 s->buffer->last = s->buffer->start; | |
182 | |
183 ngx_imap_proxy_init(s); | |
184 | |
185 return; | |
186 | |
151 } else { | 187 } else { |
152 rc = NGX_IMAP_PARSE_INVALID_COMMAND; | 188 rc = NGX_IMAP_PARSE_INVALID_COMMAND; |
153 } | 189 } |
154 | 190 |
155 break; | 191 break; |