projects
/
citadel.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
b421d7c
)
some more places for the transition IO->DB queue
author
Wilfried Goesgens
<dothebart@citadel.org>
Tue, 11 Nov 2014 21:26:38 +0000
(22:26 +0100)
committer
Wilfried Goesgens
<dothebart@citadel.org>
Tue, 11 Nov 2014 21:26:38 +0000
(22:26 +0100)
citadel/event_client.c
patch
|
blob
|
history
diff --git
a/citadel/event_client.c
b/citadel/event_client.c
index b3bb59eb8a2622585f51006651f765b4674f5614..959aa542d14207c66d294d54174bb3817a244a22 100644
(file)
--- a/
citadel/event_client.c
+++ b/
citadel/event_client.c
@@
-398,7
+398,7
@@
void StopCurlWatchers(AsyncIO *IO)
IO->RecvBuf.fd = 0;
}
IO->RecvBuf.fd = 0;
}
-
void
ShutDownCLient(AsyncIO *IO)
+
eNextState
ShutDownCLient(AsyncIO *IO)
{
CitContext *Ctx =IO->CitContext;
{
CitContext *Ctx =IO->CitContext;
@@
-418,11
+418,12
@@
void ShutDownCLient(AsyncIO *IO)
IO->DNS.Channel = NULL;
}
assert(IO->Terminate);
IO->DNS.Channel = NULL;
}
assert(IO->Terminate);
- IO->Terminate(IO);
+
return
IO->Terminate(IO);
}
void PostInbound(AsyncIO *IO)
{
}
void PostInbound(AsyncIO *IO)
{
+
switch (IO->NextState) {
case eSendFile:
ev_io_start(event_base, &IO->send_event);
switch (IO->NextState) {
case eSendFile:
ev_io_start(event_base, &IO->send_event);
@@
-444,6
+445,7
@@
void PostInbound(AsyncIO *IO)
break;
case eDBQuery:
StopClientWatchers(IO, 0);
break;
case eDBQuery:
StopClientWatchers(IO, 0);
+ QueueAnDBOperation(IO);
default:
break;
}
default:
break;
}
@@
-454,17
+456,18
@@
void PostInbound(AsyncIO *IO)
ev_io_start(event_base, &IO->recv_event);
break;
case eTerminateConnection:
ev_io_start(event_base, &IO->recv_event);
break;
case eTerminateConnection:
- ShutDownCLient(IO);
- break;
case eAbort:
case eAbort:
- ShutDownCLient(IO);
+ if (ShutDownCLient(IO) == eDBQuery) {
+ QueueAnDBOperation(IO);
+ }
break;
case eSendDNSQuery:
case eReadDNSReply:
break;
case eSendDNSQuery:
case eReadDNSReply:
- case eDBQuery:
case eConnect:
case eReadMessage:
break;
case eConnect:
case eReadMessage:
break;
+ case eDBQuery:
+ QueueAnDBOperation(IO);
}
}
eReadState HandleInbound(AsyncIO *IO)
}
}
eReadState HandleInbound(AsyncIO *IO)
@@
-512,15
+515,12
@@
eReadState HandleInbound(AsyncIO *IO)
}
if (Finished != eMustReadMore) {
}
if (Finished != eMustReadMore) {
- eNextState rc;
- assert(IO->ReadDone);
ev_io_stop(event_base, &IO->recv_event);
ev_io_stop(event_base, &IO->recv_event);
-
rc
= IO->ReadDone(IO);
- if (
rc
== eDBQuery) {
+
IO->NextState
= IO->ReadDone(IO);
+ if (
IO->NextState
== eDBQuery) {
return QueueAnDBOperation(IO);
}
else {
return QueueAnDBOperation(IO);
}
else {
- IO->NextState = rc;
Finished = StrBufCheckBuffer(&IO->RecvBuf);
}
}
Finished = StrBufCheckBuffer(&IO->RecvBuf);
}
}