Hello! I've just tried to work (again) with Apache::Session::DBI, and the following handler: # skipped sub handler { my ($r) = @_; return -1 if $r->method !~ /^(GET|POST|HEAD)$/; return -1 if defined($r->content_type) && $r->content_type !~ m|^text/|io; my %session; my $cookie = $r->header_in('Cookie'); $cookie =~ s/SESSION_ID=(\w*)/$1/; # Unless exists session_id, clean it! my $dbh = DBI->connect ("DBI:mysql:mail2pager", "mine", "password", { RaiseError => 1, PrintError => 1, AutoCommit => 1, } ); my $sth = $dbh->prepare_cached(q{ select id from sessions where id = ? }); $sth->execute($cookie); my $rses; $rses = $sth->fetchall_arrayref(); if (scalar @$rses == 0) { $cookie = undef; } tie %session, 'Apache::Session::DBI', $cookie, { DataSource => 'dbi:mysql:mail2pager', UserName => 'tarkhil', Password => 'cypurcad'}; warn "\[$$\] Tied session $session{_session_id}\n"; $r->header_out("Set-Cookie" => "SESSION_ID=$session{_session_id};") if ( !$cookie ); # This creates a global called %session that is accessible in all components # Feel free to rename this as needed. # local *HTML::Mason::Commands::session = \%session; my $res = $ah->handle_request($r); warn "\[$$\] Going to untie session $session{_session_id}\n"; untie %HTML::Mason::Commands::session; untie %session; warn "\[$$\] Session untied\n"; return $res; } produced the following trace: [92525] Tied session c1e710ab3c0e64a2 [92525] Going to untie session c1e710ab3c0e64a2 ^^^^^^^ [92526] Tied session 8e38e48671c2d782 [92523] Going to untie session 4fc7720c37573e95 [92523] Session untied [92526] Going to untie session 8e38e48671c2d782 [92526] Session untied [92534] Tied session 0e9ffc7f9428baae [92534] Going to untie session 0e9ffc7f9428baae [92534] Session untied The session being untied by PID 92525 NEVER got untied. Does anyone have any ideas on that behaviour? -- Alexander B. Povolotsky [ICQ 18277558] [2:5020/145] [[EMAIL PROTECTED]]