mirror of
https://github.com/nginx/nginx.git
synced 2025-06-07 17:52:38 +08:00
Auth-Status: WAIT
This commit is contained in:
parent
90d7bb2b13
commit
a53f7293c8
@ -160,6 +160,7 @@ typedef struct {
|
|||||||
unsigned no_sync_literal:1;
|
unsigned no_sync_literal:1;
|
||||||
unsigned starttls:1;
|
unsigned starttls:1;
|
||||||
unsigned auth_method:2;
|
unsigned auth_method:2;
|
||||||
|
unsigned auth_wait:1;
|
||||||
|
|
||||||
ngx_str_t login;
|
ngx_str_t login;
|
||||||
ngx_str_t passwd;
|
ngx_str_t passwd;
|
||||||
|
@ -488,6 +488,16 @@ ngx_imap_auth_http_process_headers(ngx_imap_session_t *s,
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (len == 4
|
||||||
|
&& ctx->header_start[0] == 'W'
|
||||||
|
&& ctx->header_start[1] == 'A'
|
||||||
|
&& ctx->header_start[2] == 'I'
|
||||||
|
&& ctx->header_start[3] == 'T')
|
||||||
|
{
|
||||||
|
s->auth_wait = 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
ctx->errmsg.len = len;
|
ctx->errmsg.len = len;
|
||||||
ctx->errmsg.data = ctx->header_start;
|
ctx->errmsg.data = ctx->header_start;
|
||||||
|
|
||||||
@ -632,6 +642,23 @@ ngx_imap_auth_http_process_headers(ngx_imap_session_t *s,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (s->auth_wait) {
|
||||||
|
timer = ctx->sleep;
|
||||||
|
|
||||||
|
ngx_destroy_pool(ctx->pool);
|
||||||
|
|
||||||
|
if (timer == 0) {
|
||||||
|
ngx_imap_auth_http_init(s);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ngx_add_timer(s->connection->read, timer * 1000);
|
||||||
|
|
||||||
|
s->connection->read->handler = ngx_imap_auth_sleep_handler;
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (ctx->addr.len == 0 || ctx->port.len == 0) {
|
if (ctx->addr.len == 0 || ctx->port.len == 0) {
|
||||||
ngx_log_error(NGX_LOG_ERR, s->connection->log, 0,
|
ngx_log_error(NGX_LOG_ERR, s->connection->log, 0,
|
||||||
"auth http server %V did not send server or port",
|
"auth http server %V did not send server or port",
|
||||||
@ -758,6 +785,12 @@ ngx_imap_auth_sleep_handler(ngx_event_t *rev)
|
|||||||
|
|
||||||
rev->timedout = 0;
|
rev->timedout = 0;
|
||||||
|
|
||||||
|
if (s->auth_wait) {
|
||||||
|
s->auth_wait = 0;
|
||||||
|
ngx_imap_auth_http_init(s);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (s->protocol == NGX_IMAP_POP3_PROTOCOL) {
|
if (s->protocol == NGX_IMAP_POP3_PROTOCOL) {
|
||||||
s->imap_state = ngx_pop3_start;
|
s->imap_state = ngx_pop3_start;
|
||||||
s->connection->read->handler = ngx_pop3_auth_state;
|
s->connection->read->handler = ngx_pop3_auth_state;
|
||||||
|
Loading…
Reference in New Issue
Block a user