Assert that we don't always have a valid session.
authorWilfried Goesgens <willi@arangodb.com>
Mon, 16 Nov 2015 19:28:06 +0000 (20:28 +0100)
committerWilfried Goesgens <willi@arangodb.com>
Mon, 16 Nov 2015 19:28:06 +0000 (20:28 +0100)
citadel/event_client.c
citadel/event_client.h

index fad9eefeccaa5dea30651ba65cc482a1baa19d65..4ab63a4a292bbd1edb08e490b195698d75decddf 100644 (file)
@@ -157,7 +157,7 @@ DB_PerformNext(struct ev_loop *loop, ev_idle *watcher, int revents)
        AsyncIO *IO = watcher->data;
 
        SetEVState(IO, eDBNext);
-       IO->CitContext->lastcmd = IO->Now = ev_now(event_db);
+       SET_EV_TIME(IO, event_db);
        EV_syslog(LOG_DEBUG, "%s()", __FUNCTION__);
        become_session(IO->CitContext);
 
@@ -221,7 +221,7 @@ static void IO_abort_shutdown_callback(struct ev_loop *loop,
 
        SetEVState(IO, eIOAbort);
        EV_syslog(LOG_DEBUG, "EVENT Q: %s\n", __FUNCTION__);
-       IO->CitContext->lastcmd = IO->Now = ev_now(event_base);
+       SET_EV_TIME(IO, event_base);
        assert(IO->ShutdownAbort);
        IO->ShutdownAbort(IO);
 }
@@ -544,7 +544,7 @@ IO_send_callback(struct ev_loop *loop, ev_io *watcher, int revents)
        AsyncIO *IO = watcher->data;
        const char *errmsg = NULL;
 
-       IO->CitContext->lastcmd = IO->Now = ev_now(event_base);
+       SET_EV_TIME(IO, event_base);
        become_session(IO->CitContext);
 #ifdef BIGBAD_IODBG
        {
@@ -721,7 +721,7 @@ IO_Timeout_callback(struct ev_loop *loop, ev_timer *watcher, int revents)
        AsyncIO *IO = watcher->data;
 
        SetEVState(IO, eIOTimeout);
-       IO->CitContext->lastcmd = IO->Now = ev_now(event_base);
+       SET_EV_TIME(IO, event_base);
        ev_timer_stop (event_base, &IO->rw_timeout);
        become_session(IO->CitContext);
 
@@ -750,7 +750,7 @@ IO_connfail_callback(struct ev_loop *loop, ev_timer *watcher, int revents)
        AsyncIO *IO = watcher->data;
 
        SetEVState(IO, eIOConnfail);
-       IO->CitContext->lastcmd = IO->Now = ev_now(event_base);
+       SET_EV_TIME(IO, event_base);
        ev_timer_stop (event_base, &IO->conn_fail);
 
        if (IO->SendBuf.fd != 0)
@@ -783,7 +783,7 @@ IO_connfailimmediate_callback(struct ev_loop *loop,
        AsyncIO *IO = watcher->data;
 
        SetEVState(IO, eIOConnfailNow);
-       IO->CitContext->lastcmd = IO->Now = ev_now(event_base);
+       SET_EV_TIME(IO, event_base);
        ev_idle_stop (event_base, &IO->conn_fail_immediate);
 
        if (IO->SendBuf.fd != 0)
@@ -813,7 +813,7 @@ IO_connestd_callback(struct ev_loop *loop, ev_io *watcher, int revents)
         int             err;
 
        SetEVState(IO, eIOConnNow);
-        IO->CitContext->lastcmd = IO->Now = ev_now(event_base);
+       SET_EV_TIME(IO, event_base);
         EVM_syslog(LOG_DEBUG, "connect() succeeded.\n");
 
         ev_io_stop(loop, &IO->conn_event);
@@ -847,7 +847,7 @@ IO_recv_callback(struct ev_loop *loop, ev_io *watcher, int revents)
        ssize_t nbytes;
        AsyncIO *IO = watcher->data;
 
-       IO->CitContext->lastcmd = IO->Now = ev_now(event_base);
+       SET_EV_TIME(IO, event_base);
        switch (IO->NextState) {
        case eReadFile:
                nbytes = FileRecvChunked(&IO->IOB, &errmsg);
@@ -933,7 +933,7 @@ IO_postdns_callback(struct ev_loop *loop, ev_idle *watcher, int revents)
        AsyncIO *IO = watcher->data;
 
        SetEVState(IO, eCaresFinished);
-       IO->CitContext->lastcmd = IO->Now = ev_now(event_base);
+       SET_EV_TIME(IO, event_base);
        EV_syslog(LOG_DEBUG, "event: %s\n", __FUNCTION__);
        become_session(IO->CitContext);
        assert(IO->DNS.Query->PostDNS);
index 0c9d5b7a93cd872443ee71a418fc5be5aad10913..66976a8aded74ce1fc8aa1a120976007579c26ca 100644 (file)
@@ -328,6 +328,10 @@ void SetNextTimeout(AsyncIO *IO, double timeout);
                               curl_easy_strerror(sta));                \
        } } while (0)
 
+#define SET_EV_TIME(IO, BASE)                                          \
+       IO->Now = ev_now(BASE);                                         \
+       if (IO->CitContext != NULL) IO->CitContext->lastcmd = IO->Now; 
+
 void InitIOStruct(AsyncIO *IO,
                  void *Data,
                  eNextState NextState,