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;