Commit dd16b6d0 authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

Add VRT_UnsetHdr() and remove vrt_magic_string_unset

parent 00eaed81
...@@ -55,7 +55,6 @@ ...@@ -55,7 +55,6 @@
#include "proxy/cache_proxy.h" #include "proxy/cache_proxy.h"
const void * const vrt_magic_string_end = &vrt_magic_string_end; const void * const vrt_magic_string_end = &vrt_magic_string_end;
const void * const vrt_magic_string_unset = &vrt_magic_string_unset;
const struct strands *vrt_null_strands = &(struct strands){ const struct strands *vrt_null_strands = &(struct strands){
.n = 0, .n = 0,
.p = (const char *[1]){NULL} .p = (const char *[1]){NULL}
...@@ -691,6 +690,19 @@ VRT_ValidHdr(VRT_CTX, VCL_STRANDS s) ...@@ -691,6 +690,19 @@ VRT_ValidHdr(VRT_CTX, VCL_STRANDS s)
} }
/*--------------------------------------------------------------------*/ /*--------------------------------------------------------------------*/
VCL_VOID
VRT_UnsetHdr(VRT_CTX , VCL_HEADER hs)
{
VCL_HTTP hp;
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
AN(hs);
AN(hs->what);
hp = VRT_selecthttp(ctx, hs->where);
CHECK_OBJ_NOTNULL(hp, HTTP_MAGIC);
http_Unset(hp, hs->what);
}
VCL_VOID VCL_VOID
VRT_SetHdr(VRT_CTX , VCL_HEADER hs, const char *p, ...) VRT_SetHdr(VRT_CTX , VCL_HEADER hs, const char *p, ...)
{ {
...@@ -703,23 +715,19 @@ VRT_SetHdr(VRT_CTX , VCL_HEADER hs, const char *p, ...) ...@@ -703,23 +715,19 @@ VRT_SetHdr(VRT_CTX , VCL_HEADER hs, const char *p, ...)
AN(hs->what); AN(hs->what);
hp = VRT_selecthttp(ctx, hs->where); hp = VRT_selecthttp(ctx, hs->where);
CHECK_OBJ_NOTNULL(hp, HTTP_MAGIC); CHECK_OBJ_NOTNULL(hp, HTTP_MAGIC);
if (p == vrt_magic_string_unset) { va_start(ap, p);
http_Unset(hp, hs->what); b = VRT_String(hp->ws, hs->what + 1, p, ap);
} else { va_end(ap);
va_start(ap, p); if (b == NULL) {
b = VRT_String(hp->ws, hs->what + 1, p, ap); VSLb(ctx->vsl, SLT_LostHeader, "%s", hs->what + 1);
va_end(ap); return;
if (b == NULL) { }
VSLb(ctx->vsl, SLT_LostHeader, "%s", hs->what + 1); if (FEATURE(FEATURE_VALIDATE_HEADERS) && ! validhdr(b)) {
return; VRT_fail(ctx, "Bad header %s", b);
} return;
if (FEATURE(FEATURE_VALIDATE_HEADERS) && ! validhdr(b)) {
VRT_fail(ctx, "Bad header %s", b);
return;
}
http_Unset(hp, hs->what);
http_SetHeader(hp, b);
} }
http_Unset(hp, hs->what);
http_SetHeader(hp, b);
} }
/*--------------------------------------------------------------------*/ /*--------------------------------------------------------------------*/
......
...@@ -54,6 +54,8 @@ ...@@ -54,6 +54,8 @@
* binary/load-time compatible, increment MAJOR version * binary/load-time compatible, increment MAJOR version
* *
* NEXT (2021-09-15) * NEXT (2021-09-15)
* VRT_UnsetHdr() added
* vrt_magic_string_unset removed (use VRT_UnsetHdr() instead)
* VNUMpfx() removed, SF_Parse_{Integer|Decimal|Number} added * VNUMpfx() removed, SF_Parse_{Integer|Decimal|Number} added
* vrt_null_strands added * vrt_null_strands added
* vrt_null_blob added * vrt_null_blob added
...@@ -593,6 +595,7 @@ VCL_VOID VRT_synth(VRT_CTX, VCL_INT, VCL_STRING); ...@@ -593,6 +595,7 @@ VCL_VOID VRT_synth(VRT_CTX, VCL_INT, VCL_STRING);
VCL_VOID VRT_hit_for_pass(VRT_CTX, VCL_DURATION); VCL_VOID VRT_hit_for_pass(VRT_CTX, VCL_DURATION);
VCL_BOOL VRT_ValidHdr(VRT_CTX, VCL_STRANDS); VCL_BOOL VRT_ValidHdr(VRT_CTX, VCL_STRANDS);
VCL_VOID VRT_UnsetHdr(VRT_CTX, VCL_HEADER);
VCL_VOID VRT_SetHdr(VRT_CTX, VCL_HEADER, const char *, ...); VCL_VOID VRT_SetHdr(VRT_CTX, VCL_HEADER, const char *, ...);
VCL_VOID VRT_handling(VRT_CTX, unsigned hand); VCL_VOID VRT_handling(VRT_CTX, unsigned hand);
unsigned VRT_handled(VRT_CTX); unsigned VRT_handled(VRT_CTX);
...@@ -709,5 +712,4 @@ void VRT_VCL_Allow_Discard(struct vclref **); ...@@ -709,5 +712,4 @@ void VRT_VCL_Allow_Discard(struct vclref **);
VCL_VOID VRT_synth_page(VRT_CTX, VCL_STRANDS); VCL_VOID VRT_synth_page(VRT_CTX, VCL_STRANDS);
extern const void * const vrt_magic_string_end; extern const void * const vrt_magic_string_end;
extern const void * const vrt_magic_string_unset;
int VRT_Stv(const char *nm); int VRT_Stv(const char *nm);
...@@ -93,8 +93,7 @@ vcc_Var_Wildcard(struct vcc *tl, struct symbol *parent, struct symbol *sym) ...@@ -93,8 +93,7 @@ vcc_Var_Wildcard(struct vcc *tl, struct symbol *parent, struct symbol *sym)
AZ(VSB_finish(vsb)); AZ(VSB_finish(vsb));
sym->lname = TlDup(tl, VSB_data(vsb)); sym->lname = TlDup(tl, VSB_data(vsb));
VSB_clear(vsb); VSB_clear(vsb);
VSB_printf(vsb, "VRT_SetHdr(ctx, %s, vrt_magic_string_unset)", VSB_printf(vsb, "VRT_UnsetHdr(ctx, %s)", sym->rname);
sym->rname);
AZ(VSB_finish(vsb)); AZ(VSB_finish(vsb));
sym->uname = TlDup(tl, VSB_data(vsb)); sym->uname = TlDup(tl, VSB_data(vsb));
VSB_destroy(&vsb); VSB_destroy(&vsb);
......
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