protected function shouldUseProxyDigestAuth(HTTP_Request2_Response $response)
    {
        if (407 != $response->getStatus() || !$this->request->getConfig('proxy_user')) {
            return false;
        }
        if (!($challenge = $this->parseDigestChallenge($response->getHeader('proxy-authenticate')))) {
            return false;
        }

        $key = 'proxy://' . $this->request->getConfig('proxy_host') .
               ':' . $this->request->getConfig('proxy_port');

        if (!empty(self::$challenges[$key])
            && (empty($challenge['stale']) || strcasecmp('true', $challenge['stale']))
        ) {
            $ret = false;
        } else {
            $ret = true;
        }
        self::$challenges[$key] = $challenge;
        return $ret;
    }
protected function shouldUseProxyDigestAuth(HTTP_Request2_Response $response)
    {
        if (407 != $response->getStatus() || !$this->request->getConfig('proxy_user')) {
            return false;
        }
        if (!($challenge = $this->parseDigestChallenge($response->getHeader('proxy-authenticate')))) {
            return false;
        }

        $key = 'proxy://' . $this->request->getConfig('proxy_host') .
               ':' . $this->request->getConfig('proxy_port');

        if (!empty(self::$challenges[$key])
            && (empty($challenge['stale']) || strcasecmp('true', $challenge['stale']))
        ) {
            $ret = false;
        } else {
            $ret = true;
        }
        self::$challenges[$key] = $challenge;
        return $ret;
    }
protected function shouldUseProxyDigestAuth ( HTTP_Request2_Response $ response ) { if ( 407 != $ response -> getStatus ( ) || ! $ this -> request -> getConfig ( 'proxy_user' ) ) { return false ; } if ( ! ( $ challenge = $ this -> parseDigestChallenge ( $ response -> getHeader ( 'proxy-authenticate' ) ) ) ) { return false ; } $ key = 'proxy://' . $ this -> request -> getConfig ( 'proxy_host' ) . ':' . $ this -> request -> getConfig ( 'proxy_port' ) ; if ( ! empty ( self :: $ challenges [ $ key ] ) && ( empty ( $ challenge [ 'stale' ] ) || strcasecmp ( 'true' , $ challenge [ 'stale' ] ) ) ) { $ ret = false ; } else { $ ret = true ; } self :: $ challenges [ $ key ] = $ challenge ; return $ ret ; }
Checks whether another request should be performed with proxy digest auth

Several conditions should be satisfied for it to return true:
- response status should be 407
- proxy auth credentials should be set in the request object
- response should contain Proxy-Authenticate header with digest challenge
- there is either no challenge stored for this proxy or new challenge
contains stale=true parameter (in other case we probably just failed
due to invalid username / password)

The method stores challenge values in $challenges static property

@param HTTP_Request2_Response $response response to check

@return   boolean whether another request should be performed
@throws   HTTP_Request2_Exception in case of unsupported challenge parameters
Checks whether another request should be performed with proxy digest auth