Commit 3299b793 authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

Ask the director for the suckaddr, rather than groping around inside

it's privates for it.
parent 4ad0d5bd
...@@ -513,6 +513,18 @@ vdi_simple_finish(const struct director *d, struct worker *wrk, ...@@ -513,6 +513,18 @@ vdi_simple_finish(const struct director *d, struct worker *wrk,
} }
} }
static struct suckaddr * __match_proto__(vdi_suckaddr_f)
vdi_simple_suckaddr(const struct director *d, struct worker *wrk,
struct busyobj *bo)
{
CHECK_OBJ_NOTNULL(d, DIRECTOR_MAGIC);
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
CHECK_OBJ_NOTNULL(bo, BUSYOBJ_MAGIC);
if (bo->vbc != NULL)
return(bo->vbc->addr);
return (NULL);
}
/*--------------------------------------------------------------------*/ /*--------------------------------------------------------------------*/
...@@ -555,6 +567,7 @@ VRT_init_dir(VRT_CTX, struct director **bp, int idx, ...@@ -555,6 +567,7 @@ VRT_init_dir(VRT_CTX, struct director **bp, int idx,
vs->dir.gethdrs = vdi_simple_gethdrs; vs->dir.gethdrs = vdi_simple_gethdrs;
vs->dir.getbody = vdi_simple_getbody; vs->dir.getbody = vdi_simple_getbody;
vs->dir.finish = vdi_simple_finish; vs->dir.finish = vdi_simple_finish;
vs->dir.suckaddr = vdi_simple_suckaddr;
vs->vrt = t; vs->vrt = t;
......
...@@ -63,6 +63,8 @@ typedef int vdi_getbody_f(const struct director *, struct worker *, ...@@ -63,6 +63,8 @@ typedef int vdi_getbody_f(const struct director *, struct worker *,
struct busyobj *); struct busyobj *);
typedef void vdi_finish_f(const struct director *, struct worker *, typedef void vdi_finish_f(const struct director *, struct worker *,
struct busyobj *); struct busyobj *);
typedef struct suckaddr *vdi_suckaddr_f(const struct director *,
struct worker *, struct busyobj *);
struct director { struct director {
unsigned magic; unsigned magic;
...@@ -75,6 +77,7 @@ struct director { ...@@ -75,6 +77,7 @@ struct director {
vdi_gethdrs_f *gethdrs; vdi_gethdrs_f *gethdrs;
vdi_getbody_f *getbody; vdi_getbody_f *getbody;
vdi_finish_f *finish; vdi_finish_f *finish;
vdi_suckaddr_f *suckaddr;
void *priv; void *priv;
}; };
...@@ -168,6 +171,8 @@ void VDI_Finish(const struct director *d, struct worker *wrk, ...@@ -168,6 +171,8 @@ void VDI_Finish(const struct director *d, struct worker *wrk,
struct vbc *VDI_GetFd(const struct director *d, struct worker *wrk, struct vbc *VDI_GetFd(const struct director *d, struct worker *wrk,
struct busyobj *); struct busyobj *);
int VDI_Healthy(const struct director *); int VDI_Healthy(const struct director *);
struct suckaddr *VDI_Suckaddr(const struct director *d, struct worker *wrk,
struct busyobj *bo);
void VDI_AddHostHeader(struct http *to, const struct vbc *vbc); void VDI_AddHostHeader(struct http *to, const struct vbc *vbc);
void VBE_Poll(void); void VBE_Poll(void);
void VDI_Init(void); void VDI_Init(void);
......
...@@ -155,3 +155,16 @@ VDI_Healthy(const struct director *d) ...@@ -155,3 +155,16 @@ VDI_Healthy(const struct director *d)
AN(d->healthy); AN(d->healthy);
return (d->healthy(d, NULL)); return (d->healthy(d, NULL));
} }
/* Get suckaddr ------------------------------------------------------*/
struct suckaddr *
VDI_Suckaddr(const struct director *d, struct worker *wrk, struct busyobj *bo)
{
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
CHECK_OBJ_NOTNULL(bo, BUSYOBJ_MAGIC);
CHECK_OBJ_NOTNULL(d, DIRECTOR_MAGIC);
AN(d->suckaddr);
return (d->suckaddr(d, wrk, bo));
}
...@@ -324,11 +324,7 @@ VRT_r_beresp_backend_ip(VRT_CTX) ...@@ -324,11 +324,7 @@ VRT_r_beresp_backend_ip(VRT_CTX)
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
CHECK_OBJ_NOTNULL(ctx->bo, BUSYOBJ_MAGIC); CHECK_OBJ_NOTNULL(ctx->bo, BUSYOBJ_MAGIC);
if (ctx->bo->vbc != NULL) { return (VDI_Suckaddr(ctx->bo->director_resp, ctx->bo->wrk, ctx->bo));
CHECK_OBJ_NOTNULL(ctx->bo->vbc, VBC_MAGIC);
return(ctx->bo->vbc->addr);
} else
return (NULL);
} }
/*--------------------------------------------------------------------*/ /*--------------------------------------------------------------------*/
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment