X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=etc%2Fmod_perl%2FMyApache2%2FCopyCookie.pm;h=3dbade1b866a4d8471cdd29e99d56e8e4c721959;hb=a2f99e99ab4e4324867d2c3a10ed290e74c5c13a;hp=8961d74bf7055ad739768dc1a515075bafd1b37e;hpb=ea5fa54935ecaec961e3744bb26a8de71c94f919;p=mkws-moved-to-github.git diff --git a/etc/mod_perl/MyApache2/CopyCookie.pm b/etc/mod_perl/MyApache2/CopyCookie.pm index 8961d74..3dbade1 100644 --- a/etc/mod_perl/MyApache2/CopyCookie.pm +++ b/etc/mod_perl/MyApache2/CopyCookie.pm @@ -12,17 +12,25 @@ sub handler { my $f = shift; warn "in MyApache2::CopyCookie (f=$f)"; + # If the server generated a new cookie, make it available in a + # header other than the magic "Cookie" that clients can't read. my $ho = $f->r->headers_out; my $cookie = $ho->get('Set-Cookie'); - warn "MyApache2::CopyCookie headers_out='$ho', cookie='$cookie'"; $ho->set('X-Set-Cookie', $cookie); - my $extra = $ho->get('X-Set-Cookie'); - warn "MyApache2::CopyCookie extra cookie='$extra'"; + + # If the client sent an existing cookie as X-Cookie, but didn't + # set Cookie, copy the former to the latter. + my $hi = $f->r->headers_in; + $cookie = $hi->get('Cookie'); + if (!defined $cookie || $cookie eq "") { + $cookie = $hi->get('X-Cookie'); + warn "copying X-Cookie '$cookie' to Cookie"; + $hi->set('Cookie', $cookie); + } while ($f->read(my $buffer, BUFF_LEN)) { $f->print($buffer); } - warn "MyApache2::CopyCookie copied data"; return Apache2::Const::OK; }