[master] 2a921ec Add a new transport method for reembarking a request from the waiting list.
Poul-Henning Kamp
phk at FreeBSD.org
Mon May 9 16:33:06 CEST 2016
commit 2a921ecb5e076ed1e2e423ec2861fa2cae013eac
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Mon May 9 14:31:49 2016 +0000
Add a new transport method for reembarking a request from the waiting list.
diff --git a/bin/varnishd/cache/cache_hash.c b/bin/varnishd/cache/cache_hash.c
index c808494..7e4acc3 100644
--- a/bin/varnishd/cache/cache_hash.c
+++ b/bin/varnishd/cache/cache_hash.c
@@ -56,6 +56,7 @@
#include <stdlib.h>
#include "cache.h"
+#include "cache/cache_transport.h"
#include "hash/hash_slinger.h"
#include "vsha256.h"
@@ -548,6 +549,10 @@ hsh_rush2(struct worker *wrk, struct rush *r)
CHECK_OBJ_NOTNULL(req, REQ_MAGIC);
VTAILQ_REMOVE(&r->reqs, req, w_list);
DSL(DBG_WAITINGLIST, req->vsl->wid, "off waiting list");
+ if (req->transport->reembark != NULL) {
+ req->transport->reembark(wrk, req);
+ continue;
+ }
if (!SES_Reschedule_Req(req))
continue;
/* Couldn't schedule, ditch */
diff --git a/bin/varnishd/cache/cache_transport.h b/bin/varnishd/cache/cache_transport.h
index 2b22519..ef57325 100644
--- a/bin/varnishd/cache/cache_transport.h
+++ b/bin/varnishd/cache/cache_transport.h
@@ -41,6 +41,7 @@ typedef void vtr_req_body_f (struct req *);
typedef void vtr_sess_panic_f (struct vsb *, const struct sess *);
typedef void vtr_req_panic_f (struct vsb *, const struct req *);
typedef void vtr_req_fail_f (struct req *, enum sess_close);
+typedef void vtr_reembark_f (struct worker *, struct req *);
struct transport {
unsigned magic;
@@ -58,6 +59,7 @@ struct transport {
vtr_deliver_f *deliver;
vtr_sess_panic_f *sess_panic;
vtr_req_panic_f *req_panic;
+ vtr_reembark_f *reembark;
VTAILQ_ENTRY(transport) list;
};
More information about the varnish-commit
mailing list