Skip to content

Commit 268b182

Browse files
committed
backend: move vbe_dir_finish for what comes next
No modifications are done to the vbe_dir_finish function. Signed-off-by: Asad Sajjad Ahmed <asadsa@varnish-software.com>
1 parent cc612f0 commit 268b182

File tree

1 file changed

+45
-45
lines changed

1 file changed

+45
-45
lines changed

bin/varnishd/cache/cache_backend.c

Lines changed: 45 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,51 @@ vbe_close_acct(const struct pfd *pfd, const stream_close_t reason)
210210
WRONG("Wrong event in vbe_close_acct");
211211
}
212212

213+
static void v_matchproto_(vdi_finish_f)
214+
vbe_dir_finish(VRT_CTX, VCL_BACKEND d)
215+
{
216+
struct backend *bp;
217+
struct busyobj *bo;
218+
struct pfd *pfd;
219+
220+
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
221+
CHECK_OBJ_NOTNULL(d, DIRECTOR_MAGIC);
222+
bo = ctx->bo;
223+
CHECK_OBJ_NOTNULL(bo, BUSYOBJ_MAGIC);
224+
CAST_OBJ_NOTNULL(bp, d->priv, BACKEND_MAGIC);
225+
226+
CHECK_OBJ_NOTNULL(bo->htc, HTTP_CONN_MAGIC);
227+
CHECK_OBJ_NOTNULL(bo->htc->doclose, STREAM_CLOSE_MAGIC);
228+
229+
pfd = bo->htc->priv;
230+
bo->htc->priv = NULL;
231+
if (bo->htc->doclose != SC_NULL || bp->proxy_header != 0) {
232+
vbe_close_acct(pfd, bo->htc->doclose);
233+
VSLb(bo->vsl, SLT_BackendClose, "%d %s close %s", *PFD_Fd(pfd),
234+
VRT_BACKEND_string(d), bo->htc->doclose->name);
235+
VCP_Close(&pfd);
236+
AZ(pfd);
237+
Lck_Lock(bp->director->mtx);
238+
VSC_C_main->backend_closed++;
239+
} else {
240+
assert (PFD_State(pfd) == PFD_STATE_USED);
241+
VSLb(bo->vsl, SLT_BackendClose, "%d %s recycle", *PFD_Fd(pfd),
242+
VRT_BACKEND_string(d));
243+
Lck_Lock(bp->director->mtx);
244+
VSC_C_main->backend_recycle++;
245+
VCP_Recycle(bo->wrk, &pfd);
246+
}
247+
assert(bp->n_conn > 0);
248+
bp->n_conn--;
249+
AN(bp->vsc);
250+
bp->vsc->conn--;
251+
#define ACCT(foo) bp->vsc->foo += bo->acct.foo;
252+
#include "tbl/acct_fields_bereq.h"
253+
vbe_connwait_signal_locked(bp);
254+
Lck_Unlock(bp->director->mtx);
255+
bo->htc = NULL;
256+
}
257+
213258
/*--------------------------------------------------------------------
214259
* Get a connection to the backend
215260
*
@@ -379,51 +424,6 @@ vbe_dir_getfd(VRT_CTX, struct worker *wrk, VCL_BACKEND dir, struct backend *bp,
379424
return (pfd);
380425
}
381426

382-
static void v_matchproto_(vdi_finish_f)
383-
vbe_dir_finish(VRT_CTX, VCL_BACKEND d)
384-
{
385-
struct backend *bp;
386-
struct busyobj *bo;
387-
struct pfd *pfd;
388-
389-
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
390-
CHECK_OBJ_NOTNULL(d, DIRECTOR_MAGIC);
391-
bo = ctx->bo;
392-
CHECK_OBJ_NOTNULL(bo, BUSYOBJ_MAGIC);
393-
CAST_OBJ_NOTNULL(bp, d->priv, BACKEND_MAGIC);
394-
395-
CHECK_OBJ_NOTNULL(bo->htc, HTTP_CONN_MAGIC);
396-
CHECK_OBJ_NOTNULL(bo->htc->doclose, STREAM_CLOSE_MAGIC);
397-
398-
pfd = bo->htc->priv;
399-
bo->htc->priv = NULL;
400-
if (bo->htc->doclose != SC_NULL || bp->proxy_header != 0) {
401-
vbe_close_acct(pfd, bo->htc->doclose);
402-
VSLb(bo->vsl, SLT_BackendClose, "%d %s close %s", *PFD_Fd(pfd),
403-
VRT_BACKEND_string(d), bo->htc->doclose->name);
404-
VCP_Close(&pfd);
405-
AZ(pfd);
406-
Lck_Lock(bp->director->mtx);
407-
VSC_C_main->backend_closed++;
408-
} else {
409-
assert (PFD_State(pfd) == PFD_STATE_USED);
410-
VSLb(bo->vsl, SLT_BackendClose, "%d %s recycle", *PFD_Fd(pfd),
411-
VRT_BACKEND_string(d));
412-
Lck_Lock(bp->director->mtx);
413-
VSC_C_main->backend_recycle++;
414-
VCP_Recycle(bo->wrk, &pfd);
415-
}
416-
assert(bp->n_conn > 0);
417-
bp->n_conn--;
418-
AN(bp->vsc);
419-
bp->vsc->conn--;
420-
#define ACCT(foo) bp->vsc->foo += bo->acct.foo;
421-
#include "tbl/acct_fields_bereq.h"
422-
vbe_connwait_signal_locked(bp);
423-
Lck_Unlock(bp->director->mtx);
424-
bo->htc = NULL;
425-
}
426-
427427
static int v_matchproto_(vdi_gethdrs_f)
428428
vbe_dir_gethdrs(VRT_CTX, VCL_BACKEND d)
429429
{

0 commit comments

Comments
 (0)