Changeset 533
- Timestamp:
- 08/18/06 22:44:54 (4 years ago)
- Location:
- trunk/lib/Perlbal
- Files:
-
- 2 modified
-
BackendHTTP.pm (modified) (1 diff)
-
Service.pm (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/lib/Perlbal/BackendHTTP.pm
r529 r533 386 386 return; 387 387 } elsif ((my $urls = $hd->header('X-REPROXY-URL')) && $self->may_reproxy) { 388 my $res_headers = $self->{res_headers}; 389 390 if (defined $reproxy_cache_for and my $reproxy_cache = $self->{service}->reproxy_cache) { 391 my ($timeout_delta, $cache_headers) = split ';', $reproxy_cache_for, 2; 392 my $timeout = $timeout_delta ? time + $timeout_delta : undef; 393 394 my $hostname = $client->{req_headers}->header("Host"); 395 my $request = $client->{req_headers}->{requestLine}; 396 397 $hostname = '' unless defined $hostname; 398 $request = '' unless defined $request; 399 400 my $key = "$hostname|$request"; 401 # warn "Caching redirect in '$key'\n"; 402 403 my @headers; 404 foreach my $header (split /\s+/, $cache_headers) { 405 next unless my $value = $res_headers->header($header); 406 $value = _ref_to($value) if uc($header) eq 'CONTENT-TYPE'; 407 my $key = _ref_to($header); 408 push @headers, ($key, $value); 409 } 410 # warn "Code: $res_headers->{code} Headers: ", join( ",", @headers ), "\n"; 411 $reproxy_cache->set($key, [$timeout, \@headers, $urls]); 412 } 413 388 $self->{service}->add_to_reproxy_url_cache($reproxy_cache_for, $hd) 389 if $reproxy_cache_for; 414 390 $client->start_reproxy_uri($self->{res_headers}, $urls); 415 391 $self->next_request; -
trunk/lib/Perlbal/Service.pm
r527 r533 1383 1383 } 1384 1384 1385 sub add_to_reproxy_url_cache { 1386 my Perlbal::Service $self; 1387 my ($self, $reshd) = @_; 1388 1389 my $reproxy_cache_for = $hd->header('X-REPROXY-CACHE-FOR'); 1390 my $urls = $hd->header('X-REPROXY-URL'); 1391 1392 if (defined $reproxy_cache_for and my $reproxy_cache = $self->{service}->reproxy_cache) { 1393 my ($timeout_delta, $cache_headers) = split ';', $reproxy_cache_for, 2; 1394 my $timeout = $timeout_delta ? time() + $timeout_delta : undef; 1395 1396 my $hostname = $client->{req_headers}->header("Host") || ''; 1397 my $requri = $client->{req_headers}->request_uri || ''; 1398 my $key = "$hostname|$requri"; 1399 1400 my @headers; 1401 foreach my $header (split /\s+/, $cache_headers) { 1402 next unless my $value = $res_headers->header($header); 1403 $value = _ref_to($value) if uc($header) eq 'CONTENT-TYPE'; 1404 my $key = _ref_to($header); 1405 push @headers, ($key, $value); 1406 } 1407 $reproxy_cache->set($key, [$timeout, \@headers, $urls]); 1408 } 1409 1410 } 1411 1385 1412 1; 1386 1413
