CAS_Client::_rebroadcast PHP Method

_rebroadcast() private method

This method rebroadcasts logout/pgtIou requests. Can be LOGOUT,PGTIOU
private _rebroadcast ( integer $type ) : void
$type integer type of rebroadcasting.
return void
    private function _rebroadcast($type)
    {
        phpCAS::traceBegin();
        $rebroadcast_curl_options = array(CURLOPT_FAILONERROR => 1, CURLOPT_FOLLOWLOCATION => 1, CURLOPT_RETURNTRANSFER => 1, CURLOPT_CONNECTTIMEOUT => 1, CURLOPT_TIMEOUT => 4);
        // Try to determine the IP address of the server
        if (!empty($_SERVER['SERVER_ADDR'])) {
            $ip = $_SERVER['SERVER_ADDR'];
        } else {
            if (!empty($_SERVER['LOCAL_ADDR'])) {
                // IIS 7
                $ip = $_SERVER['LOCAL_ADDR'];
            }
        }
        // Try to determine the DNS name of the server
        if (!empty($ip)) {
            $dns = gethostbyaddr($ip);
        }
        $multiClassName = 'CAS_Request_CurlMultiRequest';
        $multiRequest = new $multiClassName();
        for ($i = 0; $i < sizeof($this->_rebroadcast_nodes); $i++) {
            if ($this->_getNodeType($this->_rebroadcast_nodes[$i]) == self::HOSTNAME && !empty($dns) && stripos($this->_rebroadcast_nodes[$i], $dns) === false || $this->_getNodeType($this->_rebroadcast_nodes[$i]) == self::IP && !empty($ip) && stripos($this->_rebroadcast_nodes[$i], $ip) === false) {
                phpCAS::trace('Rebroadcast target URL: ' . $this->_rebroadcast_nodes[$i] . $_SERVER['REQUEST_URI']);
                $className = $this->_requestImplementation;
                $request = new $className();
                $url = $this->_rebroadcast_nodes[$i] . $_SERVER['REQUEST_URI'];
                $request->setUrl($url);
                if (count($this->_rebroadcast_headers)) {
                    $request->addHeaders($this->_rebroadcast_headers);
                }
                $request->makePost();
                if ($type == self::LOGOUT) {
                    // Logout request
                    $request->setPostBody('rebroadcast=false&logoutRequest=' . $_POST['logoutRequest']);
                } else {
                    if ($type == self::PGTIOU) {
                        // pgtIou/pgtId rebroadcast
                        $request->setPostBody('rebroadcast=false');
                    }
                }
                $request->setCurlOptions($rebroadcast_curl_options);
                $multiRequest->addRequest($request);
            } else {
                phpCAS::trace('Rebroadcast not sent to self: ' . $this->_rebroadcast_nodes[$i] . ' == ' . (!empty($ip) ? $ip : '') . '/' . (!empty($dns) ? $dns : ''));
            }
        }
        // We need at least 1 request
        if ($multiRequest->getNumRequests() > 0) {
            $multiRequest->send();
        }
        phpCAS::traceEnd();
    }
CAS_Client