From: Vsevolod Stakhov Date: Tue, 16 Jun 2015 18:09:36 +0000 (+0100) Subject: Store partial results in memcached. X-Git-Tag: 1.0.0~530 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5ad7492c725e5b3e383f343fbc410fcea28f7e0e;p=thirdparty%2Frspamd.git Store partial results in memcached. --- diff --git a/utils/redirector.pl.in b/utils/redirector.pl.in index 704f5749b2..b483c127f4 100755 --- a/utils/redirector.pl.in +++ b/utils/redirector.pl.in @@ -203,7 +203,9 @@ sub memcached_cache_url { if ( $url ne $url_real ) { my $context = Digest->new("SHA-256"); $context->add($url); - $memd->set( $context->digest(), $url_real, $cfg{cache_expire} ); + if (!$memd->set( $context->digest(), $url_real, $cfg{cache_expire} )) { + _log(LOG_INFO, "cannot save redirect from $url to $url_real in memcached"); + } } } @@ -318,7 +320,14 @@ sub process_client { elsif ( $http_response->code != 200 ) { _log( LOG_INFO, "HTTP response was %d, for request to %s", $http_response->code, $http_request->uri ); - my $new_response = create_response( $http_response->code ); + my $new_response; + if ($rec == 0) { + $new_response = create_response( $http_response->code ); + } + else { + memcached_cache_url( $base_url, $http_request->uri ); + $new_response = create_response( 200, $http_request->uri ); + } # Avoid sending the response if the client has gone away. $heap->{client}->put($new_response) if defined $heap->{client};