]> source.dussan.org Git - rspamd.git/commitdiff
* Remove events in handlers
authorVsevolod Stakhov <vsevolod@rambler-co.ru>
Mon, 28 Jun 2010 12:43:13 +0000 (16:43 +0400)
committerVsevolod Stakhov <vsevolod@rambler-co.ru>
Mon, 28 Jun 2010 12:43:13 +0000 (16:43 +0400)
src/smtp.c
src/smtp.h

index fd22f4080263bf7c82649917a410421b9f8473e0..a94630ea412418f1799d301f78cfd71362326cb0 100644 (file)
@@ -622,7 +622,8 @@ static void
 smtp_delay_handler (int fd, short what, void *arg)
 {
        struct smtp_session            *session = arg;
-
+       
+       remove_normal_event (session->s, (event_finalizer_t)event_del, session->delay_timer);
        if (session->state == SMTP_STATE_DELAY) {
                session->state = SMTP_STATE_GREETING;
                write_smtp_greeting (session);
@@ -659,6 +660,7 @@ smtp_make_delay (struct smtp_session *session)
                evtimer_set (tev, smtp_delay_handler, session);
                evtimer_add (tev, tv);
                register_async_event (session->s, (event_finalizer_t)event_del, tev, FALSE);
+               session->delay_timer = tev;
        }
        else if (session->state == SMTP_STATE_DELAY) {
                session->state = SMTP_STATE_GREETING;
@@ -674,7 +676,8 @@ smtp_dns_cb (int result, char type, int count, int ttl, void *addresses, void *a
 {
        struct smtp_session            *session = arg;
        int                             i, res = 0;
-
+       
+       remove_forced_event (session->s, (event_finalizer_t)smtp_dns_cb);
        switch (session->state) {
                case SMTP_STATE_RESOLVE_REVERSE:
                        /* Parse reverse reply and start resolve of this ip */
index f8aaaeb8458c89f4f46772e85e05e6b38ffffb3b..a986b2853540bd28538adf317dbd80cd2da77e42 100644 (file)
@@ -88,6 +88,8 @@ struct smtp_session {
 
        struct smtp_upstream *upstream;
 
+       struct event *delay_timer;
+
        gboolean resolved;
        gboolean esmtp;
 };