]> git.kaiwu.me - nginx.git/commitdiff
move event handling to protocol specific code,
authorIgor Sysoev <igor@sysoev.ru>
Fri, 14 Sep 2007 10:42:19 +0000 (10:42 +0000)
committerIgor Sysoev <igor@sysoev.ru>
Fri, 14 Sep 2007 10:42:19 +0000 (10:42 +0000)
it is required to support SMTP greeting delay

src/mail/ngx_mail_handler.c
src/mail/ngx_mail_imap_handler.c
src/mail/ngx_mail_pop3_handler.c
src/mail/ngx_mail_smtp_handler.c

index 8f549a8d30306e36a8439a1d72defd5c1998d695..000865d2f64363327157a5c76af49bb072ff4f4a 100644 (file)
@@ -253,12 +253,6 @@ ngx_mail_init_session(ngx_connection_t *c)
         return;
     }
 
-    ngx_add_timer(c->read, cscf->timeout);
-
-    if (ngx_handle_read_event(c->read, 0) == NGX_ERROR) {
-        ngx_mail_close_connection(c);
-    }
-
     c->write->handler = ngx_mail_send;
 
     ngx_mail_init_sessions[s->protocol](s, c);
index 47a79c6d71739d1fdaa08ebaee0376cd6dacf882..0a93a0789632481049b6ae2679dbf6587a64cb4b 100644 (file)
@@ -45,11 +45,17 @@ ngx_mail_imap_init_session(ngx_mail_session_t *s, ngx_connection_t *c)
         }
     }
 
-    c->read->handler = ngx_mail_imap_init_protocol;
-
     s->out.len = sizeof(imap_greeting) - 1;
     s->out.data = imap_greeting;
 
+    c->read->handler = ngx_mail_imap_init_protocol;
+
+    ngx_add_timer(c->read, cscf->timeout); 
+
+    if (ngx_handle_read_event(c->read, 0) == NGX_ERROR) {
+        ngx_mail_close_connection(c);
+    }
+
     ngx_mail_send(c->write);
 }
 
index 708787128d1d6d5c1e5608f3989f9252d78cbbef..31cbc219249cc7b1a52bd6ef8f27dccfbc7330e0 100644 (file)
@@ -62,6 +62,12 @@ ngx_mail_pop3_init_session(ngx_mail_session_t *s, ngx_connection_t *c)
 
     c->read->handler = ngx_mail_pop3_init_protocol;
 
+    ngx_add_timer(c->read, cscf->timeout); 
+
+    if (ngx_handle_read_event(c->read, 0) == NGX_ERROR) {
+        ngx_mail_close_connection(c);
+    }
+
     ngx_mail_send(c->write);
 }
 
index 76637f92faa54eae463c6ac5c2035f60ee8ae84e..92be7fa83ecfbba559764d4c606c774b28e676f5 100644 (file)
@@ -41,9 +41,15 @@ ngx_mail_smtp_init_session(ngx_mail_session_t *s, ngx_connection_t *c)
         }
     }
 
+    s->out = cscf->smtp_greeting;
+
     c->read->handler = ngx_mail_smtp_init_protocol;
 
-    s->out = cscf->smtp_greeting;
+    ngx_add_timer(c->read, cscf->timeout); 
+
+    if (ngx_handle_read_event(c->read, 0) == NGX_ERROR) {
+        ngx_mail_close_connection(c);
+    }
 
     ngx_mail_send(c->write);
 }