Issue 8383: Fixes probing requests with doubled protocols
This commit is contained in:
parent
95bfc094e8
commit
0b8b226ee2
1 changed files with 12 additions and 9 deletions
|
@ -26,6 +26,7 @@ use DomXPath;
|
||||||
use Friendica\Core\Cache\Duration;
|
use Friendica\Core\Cache\Duration;
|
||||||
use Friendica\Core\Logger;
|
use Friendica\Core\Logger;
|
||||||
use Friendica\Core\Protocol;
|
use Friendica\Core\Protocol;
|
||||||
|
use Friendica\Core\System;
|
||||||
use Friendica\Database\DBA;
|
use Friendica\Database\DBA;
|
||||||
use Friendica\DI;
|
use Friendica\DI;
|
||||||
use Friendica\Model\Contact;
|
use Friendica\Model\Contact;
|
||||||
|
@ -141,12 +142,18 @@ class Probe
|
||||||
// Reset the static variable
|
// Reset the static variable
|
||||||
self::$baseurl = '';
|
self::$baseurl = '';
|
||||||
|
|
||||||
|
// Handles the case when the hostname contains the scheme
|
||||||
|
if (!parse_url($host, PHP_URL_SCHEME)) {
|
||||||
$ssl_url = "https://".$host."/.well-known/host-meta";
|
$ssl_url = "https://".$host."/.well-known/host-meta";
|
||||||
$url = "http://".$host."/.well-known/host-meta";
|
$url = "http://".$host."/.well-known/host-meta";
|
||||||
|
} else {
|
||||||
|
$ssl_url = $host."/.well-known/host-meta";
|
||||||
|
$url = '';
|
||||||
|
}
|
||||||
|
|
||||||
$xrd_timeout = DI::config()->get('system', 'xrd_timeout', 20);
|
$xrd_timeout = DI::config()->get('system', 'xrd_timeout', 20);
|
||||||
|
|
||||||
Logger::log("Probing for ".$host, Logger::DEBUG);
|
Logger::info('Probing', ['host' => $host, 'ssl_url' => $ssl_url, 'url' => $url, 'callstack' => System::callstack(20)]);
|
||||||
$xrd = null;
|
$xrd = null;
|
||||||
|
|
||||||
$curlResult = Network::curl($ssl_url, false, ['timeout' => $xrd_timeout, 'accept_content' => 'application/xrd+xml']);
|
$curlResult = Network::curl($ssl_url, false, ['timeout' => $xrd_timeout, 'accept_content' => 'application/xrd+xml']);
|
||||||
|
@ -161,7 +168,7 @@ class Probe
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!is_object($xrd)) {
|
if (!is_object($xrd) && ! empty($url)) {
|
||||||
$curlResult = Network::curl($url, false, ['timeout' => $xrd_timeout, 'accept_content' => 'application/xrd+xml']);
|
$curlResult = Network::curl($url, false, ['timeout' => $xrd_timeout, 'accept_content' => 'application/xrd+xml']);
|
||||||
$connection_error = ($curlResult->getErrorNumber() == CURLE_COULDNT_CONNECT) || ($curlResult->getReturnCode() == 0);
|
$connection_error = ($curlResult->getErrorNumber() == CURLE_COULDNT_CONNECT) || ($curlResult->getReturnCode() == 0);
|
||||||
if ($curlResult->isTimeout()) {
|
if ($curlResult->isTimeout()) {
|
||||||
|
@ -281,10 +288,6 @@ class Probe
|
||||||
/**
|
/**
|
||||||
* Check an URI for LRDD data
|
* Check an URI for LRDD data
|
||||||
*
|
*
|
||||||
* this is a replacement for the "lrdd" function.
|
|
||||||
* It isn't used in this class and has some redundancies in the code.
|
|
||||||
* When time comes we can check the existing calls for "lrdd" if we can rework them.
|
|
||||||
*
|
|
||||||
* @param string $uri Address that should be probed
|
* @param string $uri Address that should be probed
|
||||||
*
|
*
|
||||||
* @return array uri data
|
* @return array uri data
|
||||||
|
@ -305,7 +308,7 @@ class Probe
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
$host = $parts["host"];
|
$host = $parts['scheme'] . '://' . $parts["host"];
|
||||||
if (!empty($parts["port"])) {
|
if (!empty($parts["port"])) {
|
||||||
$host .= ':'.$parts["port"];
|
$host .= ':'.$parts["port"];
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue