diff --git a/lib/WebGUI.pm b/lib/WebGUI.pm index 0ca20dce2..ad9bba386 100644 --- a/lib/WebGUI.pm +++ b/lib/WebGUI.pm @@ -40,10 +40,10 @@ sub handler { } my $uploads = $config->get("uploadsURL"); if ($r->uri =~ m/^$uploads/) { - $r->set_handlers(PerlAccessHandler => \&uploadsHandler); + $r->push_handlers(PerlAccessHandler => \&uploadsHandler); } else { - $r->set_handlers(PerlResponseHandler => \&contentHandler); - $r->set_handlers(PerlTransHandler => sub { return Apache2::Const::OK }); + $r->push_handlers(PerlResponseHandler => \&contentHandler); + $r->push_handlers(PerlTransHandler => sub { return Apache2::Const::OK }); } return Apache2::Const::DECLINED; } @@ -59,7 +59,7 @@ sub contentHandler { my $session = WebGUI::Session->open($s->dir_config('WebguiRoot'),$r->dir_config('WebguiConfig'),$r, $s); if ($session->env->get("HTTP_X_MOZ") eq "prefetch") { # browser prefetch is a bad thing $session->http->setStatus("403","We don't allow prefetch, because it increases bandwidth, hurts stats, and can break web sites."); - $r->print($session->http->getHeader); + $session->http->getHeader; } elsif ($session->setting->get("specialState") eq "upgrading") { upgrading($session); } elsif ($session->setting->get("specialState") eq "init") { diff --git a/lib/WebGUI/Session.pm b/lib/WebGUI/Session.pm index 17cf1ae70..14878b272 100644 --- a/lib/WebGUI/Session.pm +++ b/lib/WebGUI/Session.pm @@ -359,7 +359,7 @@ sub open { my $self = {_config=>$config, _server=>$server}; bless $self , $class; $self->{_request} = Apache2::Request->new($request, POST_MAX => 1024 * $self->setting->get("maxAttachmentSize")) if (defined $request); - my $sessionId = shift || $self->http->getCookies->{"wgSession"}; + my $sessionId = shift || $self->http->getCookies->{"wgSession"} || $self->id->generate; $self->{_var} = WebGUI::Session::Var->new($self,$sessionId); return $self; } @@ -375,7 +375,7 @@ Returns a WebGUI::Session::Os object. sub os { my $self = shift; unless (exists $self->{_os}) { - $self->{_os} = WebGUI::Session::Os->new; + $self->{_os} = WebGUI::Session::Os->new(); } return $self->{_os}; } diff --git a/lib/WebGUI/Session/Var.pm b/lib/WebGUI/Session/Var.pm index 56f2d2d04..a7debd28b 100644 --- a/lib/WebGUI/Session/Var.pm +++ b/lib/WebGUI/Session/Var.pm @@ -168,11 +168,11 @@ sub new { $self->{_var} = $session->db->quickHashRef("select * from userSession where sessionId=".$session->db->quote($sessionId)); if ($self->{_var}{expires} && $self->{_var}{expires} < $session->datetime->time()) { $self->end; - } - if ($self->{_var}{sessionId} ne "") { + } elsif ($self->{_var}{sessionId} ne "") { $self->{_var}{lastPageView} = $session->datetime->time(); $self->{_var}{lastIP} = $session->env("REMOTE_ADDR"); $self->{_var}{expires} = $session->datetime->time() + $session->setting->get("sessionTimeout"); + $self->session->{_sessionId} = $self->{_var}{sessionId}; $session->db->setRow("userSession","sessionId",$self->{_var}); } else { $self->start(1,$sessionId); diff --git a/t/Session/Scratch.t b/t/Session/Scratch.t index 25e5ba3bf..4226ff7a7 100644 --- a/t/Session/Scratch.t +++ b/t/Session/Scratch.t @@ -14,14 +14,14 @@ use lib '../../lib'; use Getopt::Long; use WebGUI::Session; # ---- END DO NOT EDIT ---- -use Test::More tests => 10; # increment this value for each test you create +use Test::More tests => 14; # increment this value for each test you create my $session = initialize(); # this line is required # put your tests here -my $scratch = $session->Scratch; -my $maxCount = 10; +my $scratch = $session->scratch; +my $maxCount = 14; $scratch->deleteAll();