On Oct 28, 2013, at 3:51 AM, Carlos Guerreiro <[email protected]>
wrote:
> Thanks for the hint.
>
> I've tried that before (and again now). Unfortunately I get an assert and a
> crash right on TSContCall.
>
> [Oct 28 12:37:48.170] Server {0x2aaaadbea700} DEBUG: <HttpTunnel.cc:1241
> (consumer_handler)> (http_tunnel) [0] consumer_handler [transform write
> VC_EVENT_ERROR]
> FATAL: HttpTunnel.cc:1243: failed assert `c->alive == true`
>
> This happens at a point where data has been written to the output
> connection but the write operation has not yet completed.
> Any suggestions are welcome.
I think that Brian and Alan are the most experience with transformations. Maybe
they can help ...
>
> Br,
> Carlos
>
>
>
> On Fri, Oct 25, 2013 at 6:56 PM, James Peach <[email protected]> wrote:
>
>> On Oct 24, 2013, at 10:59 PM, Carlos Guerreiro <
>> [email protected]> wrote:
>>
>>> Hi,
>>>
>>> What is the correct way to abort an HTTP transaction in a transformation
>>> plugin, while transforming the message body?
>>> So that origin server and client sockets are closed ASAP and everything
>> is
>>> cleaned up properly in the entire transformation chain.
>>
>> I'm guessing that you would inject the error into the transformation chain
>> using TSContCall(..., TS_EVENT_ERROR, ...). I see this being done in
>> plugins/gzip/gzip.cc, plugins/experimental/esi/esi.cc and
>> lib/atscppapi/src/TransformationPlugin.cc.
>>
>> Interestingly, most of these examples use that pattern to propagate
>> errors, but few (none?) use it to generate errors.
>>
>> J
>>