add http fast quit

This commit is contained in:
yihaoDeng 2023-12-06 13:52:45 +08:00
parent 15f690dd6d
commit 59c59362f3
1 changed files with 14 additions and 11 deletions

View File

@ -194,18 +194,21 @@ static void httpDestroyMsg(SHttpMsg* msg) {
static void httpMayDiscardMsg(SHttpModule* http, SAsyncItem* item) { static void httpMayDiscardMsg(SHttpModule* http, SAsyncItem* item) {
SHttpMsg *msg = NULL, *quitMsg = NULL; SHttpMsg *msg = NULL, *quitMsg = NULL;
int8_t quit = atomic_load_8(&http->quit); if (atomic_load_8(&http->quit) == 0) {
if (quit == 1) { return;
while (!QUEUE_IS_EMPTY(&item->qmsg)) { }
queue* h = QUEUE_HEAD(&item->qmsg);
QUEUE_REMOVE(h); while (!QUEUE_IS_EMPTY(&item->qmsg)) {
msg = QUEUE_DATA(h, SHttpMsg, q); queue* h = QUEUE_HEAD(&item->qmsg);
if (!msg->quit) { QUEUE_REMOVE(h);
httpDestroyMsg(msg); msg = QUEUE_DATA(h, SHttpMsg, q);
} else { if (!msg->quit) {
quitMsg = msg; httpDestroyMsg(msg);
} } else {
quitMsg = msg;
} }
}
if (quitMsg != NULL) {
QUEUE_PUSH(&item->qmsg, &quitMsg->q); QUEUE_PUSH(&item->qmsg, &quitMsg->q);
} }
} }