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 @@
#include "proxy/cache_proxy.h"
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){
.n = 0,
.p = (const char *[1]){NULL}
......@@ -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
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);
hp = VRT_selecthttp(ctx, hs->where);
CHECK_OBJ_NOTNULL(hp, HTTP_MAGIC);
if (p == vrt_magic_string_unset) {
http_Unset(hp, hs->what);
} else {
va_start(ap, p);
b = VRT_String(hp->ws, hs->what + 1, p, ap);
va_end(ap);
if (b == NULL) {
VSLb(ctx->vsl, SLT_LostHeader, "%s", hs->what + 1);
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);
va_start(ap, p);
b = VRT_String(hp->ws, hs->what + 1, p, ap);
va_end(ap);
if (b == NULL) {
VSLb(ctx->vsl, SLT_LostHeader, "%s", hs->what + 1);
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);
}
/*--------------------------------------------------------------------*/
......
......@@ -54,6 +54,8 @@
* binary/load-time compatible, increment MAJOR version
*
* NEXT (2021-09-15)
* VRT_UnsetHdr() added
* vrt_magic_string_unset removed (use VRT_UnsetHdr() instead)
* VNUMpfx() removed, SF_Parse_{Integer|Decimal|Number} added
* vrt_null_strands added
* vrt_null_blob added
......@@ -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_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_handling(VRT_CTX, unsigned hand);
unsigned VRT_handled(VRT_CTX);
......@@ -709,5 +712,4 @@ void VRT_VCL_Allow_Discard(struct vclref **);
VCL_VOID VRT_synth_page(VRT_CTX, VCL_STRANDS);
extern const void * const vrt_magic_string_end;
extern const void * const vrt_magic_string_unset;
int VRT_Stv(const char *nm);
......@@ -93,8 +93,7 @@ vcc_Var_Wildcard(struct vcc *tl, struct symbol *parent, struct symbol *sym)
AZ(VSB_finish(vsb));
sym->lname = TlDup(tl, VSB_data(vsb));
VSB_clear(vsb);
VSB_printf(vsb, "VRT_SetHdr(ctx, %s, vrt_magic_string_unset)",
sym->rname);
VSB_printf(vsb, "VRT_UnsetHdr(ctx, %s)", sym->rname);
AZ(VSB_finish(vsb));
sym->uname = TlDup(tl, VSB_data(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