[srvx-commits] CVS: services/src helpserv.c,1.58,1.59
Brought to you by:
entrope
|
From: Adrian D. <sai...@us...> - 2002-12-20 03:36:52
|
Update of /cvsroot/srvx/services/src
In directory sc8-pr-cvs1:/tmp/cvs-serv13017
Modified Files:
helpserv.c
Log Message:
Place request-on-join requests in the unhandled queue in the correct order during the initial burst. Request IDs aren't rearranged, but '/msg botname next' will provide the correct order.
Index: helpserv.c
===================================================================
RCS file: /cvsroot/srvx/services/src/helpserv.c,v
retrieving revision 1.58
retrieving revision 1.59
diff -C2 -r1.58 -r1.59
*** helpserv.c 16 Dec 2002 00:04:58 -0000 1.58
--- helpserv.c 20 Dec 2002 03:36:48 -0000 1.59
***************
*** 736,740 ****
req->user = user;
req->handle = user->handle_info;
! req->opened = now;
req->updated = now;
--- 736,748 ----
req->user = user;
req->handle = user->handle_info;
! if (from_join && self->burst) {
! extern time_t burst_begin;
! /* We need to keep all the requests during a burst join together,
! * even if the burst takes more than 1 second. ircu seems to burst
! * in reverse-join order. */
! req->opened = burst_begin;
! } else {
! req->opened = now;
! }
req->updated = now;
***************
*** 742,751 ****
hs->unhandled = req;
req->next_unhandled = NULL;
} else {
! /* Set req->next_unhandled temporarily to be the previous
! * unhandled request, then set it null (last in list) */
! for (req->next_unhandled = hs->unhandled; req->next_unhandled->next_unhandled; req->next_unhandled = req->next_unhandled->next_unhandled);
! req->next_unhandled->next_unhandled = req;
req->next_unhandled = NULL;
}
--- 750,772 ----
hs->unhandled = req;
req->next_unhandled = NULL;
+ } else if (self->burst && hs->unhandled->opened >= req->opened) {
+ req->next_unhandled = hs->unhandled;
+ hs->unhandled = req;
+ } else if (self->burst) {
+ struct helpserv_request *unh;
+ /* Add the request to the beginning of the set of requests with
+ * req->opened having the same value. This makes reqonjoin create
+ * requests in the correct order while bursting. Note that this
+ * does not correct request ids, so they will be in reverse order
+ * though "/msg botname next" will work properly. */
+ for (unh = hs->unhandled; unh->next_unhandled && unh->next_unhandled->opened < req->opened; unh = unh->next_unhandled);
+ req->next_unhandled = unh->next_unhandled;
+ unh->next_unhandled = req;
} else {
! struct helpserv_request *unh;
! /* Add to the end */
! for (unh = hs->unhandled; unh->next_unhandled; unh = unh->next_unhandled);
req->next_unhandled = NULL;
+ unh->next_unhandled = req;
}
***************
*** 3562,3566 ****
}
! if (self->uplink->burst && !hs->req_on_join) continue;
associate_requests_bybot(hs, user, 1);
--- 3583,3587 ----
}
! if (self->burst && !hs->req_on_join) continue;
associate_requests_bybot(hs, user, 1);
|