EVENT_CLIENT: when handing over to the DB-Queue, don't re-start IO-Watchers.
[citadel.git] / citadel / event_client.c
index 6b39829f9285f736507e952c66ad463df21faef4..c633f5357a1e845520eec5d9eee2a8f86439e696 100644 (file)
@@ -370,7 +370,22 @@ void PostInbound(AsyncIO *IO)
        case eSendMore:
                assert(IO->SendDone);
                IO->NextState = IO->SendDone(IO);
-               ev_io_start(event_base, &IO->send_event);
+               switch (IO->NextState)
+               {
+               case eSendFile:
+               case eSendReply:
+               case eSendMore:
+               case eReadMessage:
+               case eReadPayload:
+               case eReadMore:
+               case eReadFile:
+                       ev_io_start(event_base, &IO->send_event);
+                       break;
+               case eDBQuery:
+                       StopClientWatchers(IO, 0);
+               default:
+                       break;
+               }
                break;
        case eReadPayload:
        case eReadMore:
@@ -581,7 +596,7 @@ IO_send_callback(struct ev_loop *loop, ev_io *watcher, int revents)
                if (errno != EAGAIN) {
                        StopClientWatchers(IO, 1);
                        EV_syslog(LOG_DEBUG,
-                                 "EVENT: Socket Invalid! [%d] [%s] [%d]\n",
+                                 "IO_send_callback(): Socket Invalid! [%d] [%s] [%d]\n",
                                  errno, strerror(errno), IO->SendBuf.fd);
                        StrBufPrintf(IO->ErrMsg,
                                     "Socket Invalid! [%s]",
@@ -814,7 +829,7 @@ IO_recv_callback(struct ev_loop *loop, ev_io *watcher, int revents)
                        // FD is gone. kick it. 
                        StopClientWatchers(IO, 1);
                        EV_syslog(LOG_DEBUG,
-                                 "EVENT: Socket Invalid! [%d] [%s] [%d]\n",
+                                 "IO_recv_callback(): Socket Invalid! [%d] [%s] [%d]\n",
                                  errno, strerror(errno), IO->SendBuf.fd);
                        StrBufPrintf(IO->ErrMsg,
                                     "Socket Invalid! [%s]",
@@ -1039,7 +1054,7 @@ void InitIOStruct(AsyncIO *IO,
        IO->Data          = Data;
 
        IO->CitContext    = CloneContext(CC);
-       IO->CitContext->session_specific_data = (char*) Data;
+       IO->CitContext->session_specific_data = Data;
        IO->CitContext->IO = IO;
 
        IO->NextState     = NextState;
@@ -1077,7 +1092,7 @@ int InitcURLIOStruct(AsyncIO *IO,
        IO->Data          = Data;
 
        IO->CitContext    = CloneContext(CC);
-       IO->CitContext->session_specific_data = (char*) Data;
+       IO->CitContext->session_specific_data = Data;
        IO->CitContext->IO = IO;
 
        IO->SendDone      = SendDone;