As usual, thanks a bunch for all your help! Using the THR_* functions work: https://github.com/gquintard/vmod_rers/blob/270a2f4272be49f8c1c904b899ec91dafcf2f873/src/lib.rs#L227 and they allow me to merge most of the vfp/vdp init code together (helped by the fact the same rust structure is both a VDP and a VFP)
It would be even more legible if we had access to the vrt_ctx directly (for both vfp AND vdp) so I wouldn't have to build my own, OR if we hade VRT_priv_task_raw_parts(const req *, const busyobj *, const void *) so I didn't have to build my own context, but that is already pretty sweet Cheers! -- Guillaume Quintard On Mon, Jan 3, 2022 at 7:58 AM Dridi Boukelmoune <dr...@varni.sh> wrote: > On Fri, Dec 31, 2021 at 11:48 PM Guillaume Quintard > <guillaume.quint...@gmail.com> wrote: > > > > Small follow-up on that one: it would be nice for VFP to be able to > disable streaming (bo->do_stream), so that's an extra argument to be able > to access the busyobj > > > > -- > > Guillaume Quintard > > > > > > On Sun, Dec 26, 2021 at 6:11 PM Guillaume Quintard < > guillaume.quint...@gmail.com> wrote: > >> > >> Happy holidays to everyone, > > Happy new year ! > > >> Unless I'm mistaken, there's no way for a VFP to access the busyobj, > and was wondering if that could change as I need it to retrieve a vmod_priv. > > I think your statement is correct. > > >> For some context, I stumbled on this while working on this vmod: > https://github.com/gquintard/vmod_rers/tree/v0.0.2 > >> (It's in rust, and I'm using it to explore what kind of bindings we > need. I already have a couple of examples for VDP[1] and VFP[2] in the > crate[3] repo, but of course they don't need as much as a real vmod.) > >> > >> With vmod_rers, the user is able to add regex/sub pairs on a > per-request basis [4], and they will be acted upon by the VDP. To store and > retrieve the pairs I use the regular "fake vrt_ctx trick"[4], since the VDP > has access to the req struct, it's very easy to build. > >> However, I'm unable to do the same thing on the VFP side since I have > neither a req (fair) nor a bo. > > The big difference between both is that we only use VDPs to deliver > client responses, but we use VFPs to fetch both beresp and req bodies, > so the VFP operates at the objcore level. > > >> Is there a big reason for not having access to it, or is it just that > nobody asked for it until now? > > Probably nobody never asked for it? > > Passing a VRT_CTX to the VFP init function could help grab a req or bo > and stash it in vfp_entry::priv1, but I don't see a way to do that > today without cheating. > > *cough* THR_GetBusyobj() *cough* > > Cheers, > Dridi >
_______________________________________________ varnish-dev mailing list varnish-dev@varnish-cache.org https://www.varnish-cache.org/lists/mailman/listinfo/varnish-dev