static int vbp_write_proxy_v1(struct vbp_target *vt, int *sock) { char buf[105]; /* maximum size for a TCP6 PROXY line with null char */ char addr[VTCP_ADDRBUFSIZE]; char port[VTCP_PORTBUFSIZE]; struct sockaddr_storage ss; struct vsb vsb; socklen_t l; VTCP_myname(*sock, addr, sizeof addr, port, sizeof port); AN(VSB_new(&vsb, buf, sizeof buf, VSB_FIXEDLEN)); l = sizeof ss; AZ(getsockname(*sock, (void *)&ss, &l)); if (ss.ss_family == AF_INET || ss.ss_family == AF_INET6) { VSB_printf(&vsb, "PROXY %s %s %s %s %s\r\n", ss.ss_family == AF_INET ? "TCP4" : "TCP6", addr, addr, port, port); } else VSB_cat(&vsb, "PROXY UNKNOWN\r\n"); AZ(VSB_finish(&vsb)); return (vbp_write(vt, sock, VSB_data(&vsb), VSB_len(&vsb))); }
void PAN_Init(void) { VAS_Fail = pan_ic; vsp = &vsps; AN(VSB_new(vsp, VSM_head->panicstr, sizeof VSM_head->panicstr, VSB_FIXEDLEN)); }
void PAN_Init(void) { VAS_Fail = pan_ic; pan_vsp = &pan_vsp_storage; AN(heritage.panic_str); AN(heritage.panic_str_len); AN(VSB_new(pan_vsp, heritage.panic_str, heritage.panic_str_len, VSB_FIXEDLEN)); }
void PAN_Init(void) { VAS_Fail = pan_ic; pan_vsb = &pan_vsb_storage; AN(heritage.panic_str); AN(heritage.panic_str_len); AN(VSB_new(pan_vsb, heritage.panic_str, heritage.panic_str_len, VSB_FIXEDLEN)); CLI_AddFuncs(debug_cmds); }
vmod_body(VRT_CTX, struct vmod_priv *priv, VCL_BYTES maxsize) { struct vsb *vsb; const char *p; ssize_t size; CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); CHECK_OBJ_NOTNULL(ctx->req, REQ_MAGIC); if (priv->priv) return (VSB_data(priv->priv)); if (!http_GetHdr(ctx->req->http, H_Content_Type, &p)) return (NULL); if (strncasecmp(p, FORM_URLENCODED, sizeof(FORM_URLENCODED) - 1)) { VSLb(ctx->vsl, SLT_Error, "vsf.body: Unsupported form encoding (%s)", p); return (NULL); } size = VRT_CacheReqBody(ctx, maxsize); if (size <= 0) return (NULL); vsb = VSB_new(NULL, NULL, size + 1, 0); if (!vsb) { VSLb(ctx->vsl, SLT_Error, "vsf.body: Out of memory"); return (NULL); } if (VRB_Iterate(ctx->req, vsf_iter_req_body, vsb) == -1) { VSLb(ctx->vsl, SLT_Error, "vsf.body: Problem fetching the body"); VSB_delete(vsb); return (NULL); } AZ(VSB_finish(vsb)); priv->free = (vmod_priv_free_f *)VSB_delete; priv->priv = vsb; return (VSB_data(vsb)); }