trafficserver-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Servalan eq <servala...@hotmail.com>
Subject RE: Redirection (302 or 301) from a non remap plugin.
Date Wed, 18 Apr 2012 08:20:51 GMT


> Date: Mon, 16 Apr 2012 14:59:53 -0600
> From: zwoop@apache.org
> To: users@trafficserver.apache.org
> CC: servalaneq@hotmail.com
> Subject: Re: Redirection (302 or 301) from a non remap plugin.
> 
> On 4/16/12 8:59 AM, Servalan eq wrote:
> > Is there a way to do a (302) redirection from the non remap plugin?
> >
> > I have a remap plugin where this works - by setting he elements of the URL
> > and then setting redirect = 1 on the TSRemapRequestInfo object.
> >
> > From a standard plugin hooked to the TS_EVENT_HTTP_READ_REQUEST_HDR I
> > have my two servers being reverse proxied by calling TSUrlHostSet, 
> > TSUrlPathSet
> > and then
> >
> >   TSSkipRemappingSet(txnp, 1);
> > but in some cases I need to issue a redirect request.
> >
> 
> You can not use any o fthe "RRI" stuff in anything but a remap plugin (it 
> simply doesn't apply or map to anything in the core). You should however 
> just have to set the appopriate response headers, and response codes. 
> There's for example a blacklist plugin example, which shows one way to do this.
> 
> -- Leif
> 
> 
Thanks Leif, that worked once I realised I needed to add the  status with
     TSHttpHdrStatusSet(bufp, hdr_loc, TS_HTTP_STATUS_MOVED_TEMPORARILY);TSUrlHostGetand the
location header using  (say)TSMimeHdrFieldCreateNamed(reqp, hdr_loc, TS_MIME_FIELD_LOCATION,

TS_MIME_LEN_LOCATION , &new_field);TSMimeHdrFieldValueStringInsert(reqp, hdr_loc, new_field,
-1,  val, val_len);TSMimeHdrFieldAppend(reqp, hdr_loc, new_field);
To the _response_ header buffer, and so I had to hook my continuation to the TS_EVENT_HTTP_SEND_RESPONSE_HDR
event and wait till then.
The only problem I now have is that my TSUrlHostGet in the TS_EVENT_HTTP_READ_REQUEST_HDR
handler is failing, even though getting it manually with
TSMimeHdrFieldFind(..
is working, and returns the Host (and port).
thanks very much for all your help
Servalan 		 	   		  
Mime
View raw message