clearstatcache();
require_once S9Y_PEAR_PATH . 'HTTP/Request.php';
+ serendipity_request_start();
$req = &new HTTP_Request($uri, array('allowRedirects' => true, 'maxRedirects' => 5));
$res = $req->sendRequest();
if (PEAR::isError($res) || $req->getResponseCode() != '200')
{
+ serendipity_request_end();
$this->raiseError((__LINE__-2), ONYX_ERR_INVALID_URI . ' (#' . $req->getResponseCode() . ')');
return false;
}
$fContent = $req->getResponseBody();
+ serendipity_request_end();
if (@preg_match('@<?xml[^>]*encoding="([^"]+)"@i', $fContent, $xml_encoding)) {
$this->rss['encoding'] = strtolower($xml_encoding[1]);
}
if (function_exists('version_compare') && version_compare(phpversion(), '4.3.0') >= 0)
{
require_once S9Y_PEAR_PATH . 'HTTP/Request.php';
+ serendipity_request_start();
$req = &new HTTP_Request($uri);
- if (PEAR::isError($req->sendRequest()) || $req->getResponseCode() != '200')
+ if (PEAR::isError($req->sendRequest()) || $req->getResponseCode() != '200') {
+ serendipity_request_end();
return false;
+ }
$fHeader = $req->getResponseHeader();
if (isset($fHeader['last-modified'])) {
$modtime = $fHeader['last-modified'];
}
+ serendipity_request_end();
}
else
{
Version 1.1-alpha1()
------------------------------------------------------------------------
+ * Fix blocking site during file requests by writing session data to
+ disk. Thanks to jgoerzen! (garvinhicking)
+
* Make categories sidebar plugin able to only show categories
readable for logged in user (garvinhicking)
require_once S9Y_PEAR_PATH . 'HTTP/Request.php';
$options = array();
serendipity_plugin_api::hook_event('backend_http_request', $options, 'image');
+ serendipity_request_start();
$req = &new HTTP_Request($serendipity['POST']['imageurl'], $options);
// Try to get the URL
serendipity_plugin_api::hook_event('backend_image_add', $target);
}
}
+ serendipity_request_end();
}
} else {
if (!is_array($serendipity['POST']['target_filename'])) {
}
+/**
+ * Ends a session, so that while a file requests happens, Serendipity can work on in that session
+ */
+function serendipity_request_start() {
+ @session_write_close();
+ return true;
+}
+
+/**
+ * Continues a session after a file request
+ */
+function serendipity_request_end() {
+ @session_start();
+ return true;
+}
+
if (!function_exists('microtime_float')) {
/**
* Get current timestamp as microseconds
require_once S9Y_PEAR_PATH . 'HTTP/Request.php';
$options = array('allowRedirects' => true, 'maxRedirects' => 5, 'method' => 'POST');
serendipity_plugin_api::hook_event('backend_http_request', $options, 'trackback_send');
+ serendipity_request_start();
+
$req = &new HTTP_Request($uri, $options);
$req->addRawPostData($data, true);
$res = $req->sendRequest();
if (PEAR::isError($res)) {
+ serendipity_request_end();
return false;
}
$fContent = $req->getResponseBody();
+ serendipity_request_end();
return $fContent;
}
require_once S9Y_PEAR_PATH . 'HTTP/Request.php';
$options = array('allowRedirects' => true, 'maxRedirects' => 5, 'method' => 'GET');
serendipity_plugin_api::hook_event('backend_http_request', $options, 'trackback_detect');
+ serendipity_request_start();
$req = &new HTTP_Request($parsed_loc, $options);
$res = $req->sendRequest();
if (PEAR::isError($res)) {
echo '<div>• ' . sprintf(TRACKBACK_COULD_NOT_CONNECT, $u['host'], $u['port']) .'</div>';
+ serendipity_request_end();
return;
}
$fContent = $req->getResponseBody();
+ serendipity_request_end();
if (strlen($fContent) != 0) {
serendipity_trackback_autodiscover($fContent, $parsed_loc, $url, $author, $title, $text, $loc);
} else {
$data = '';
require_once S9Y_PEAR_PATH . 'HTTP/Request.php';
+ serendipity_request_start();
+
$req = &new HTTP_Request('http://spam.blogg.de/blacklist.txt');
if (PEAR::isError($req->sendRequest()) || $req->getResponseCode() != '200') {
fclose($fp);
}
}
+ serendipity_request_end();
}
$blacklist = explode("\n", $data);
if ($addData['type'] == 'TRACKBACK' && serendipity_db_bool($this->get_config('trackback_check_url'))) {
require_once S9Y_PEAR_PATH . 'HTTP/Request.php';
+ serendipity_request_start();
$req = &new HTTP_Request($addData['url'], array('allowRedirects' => true, 'maxRedirects' => 5));
$is_valid = false;
if (PEAR::isError($req->sendRequest()) || $req->getResponseCode() != '200') {
$is_valid = false;
}
}
+ serendipity_request_end();
if ($is_valid === false) {
$this->log($logfile, $eventData['id'], 'REJECTED', PLUGIN_EVENT_SPAMBLOCK_REASON_TRACKBACKURL, $addData);
require_once S9Y_PEAR_PATH . 'HTTP/Request.php';
$options = array();
serendipity_plugin_api::hook_event('backend_http_request', $options, 'spartacus');
+ serendipity_request_start();
$req = &new HTTP_Request($url, $options);
if (PEAR::isError($req->sendRequest()) || $req->getResponseCode() != '200') {
echo '<br />';
$this->purgeCache = true;
}
+ serendipity_request_end();
}
return $data;
$message->createPayload();
$options = array();
serendipity_plugin_api::hook_event('backend_http_request', $options, 'weblogping');
+ serendipity_request_start();
+
$req = new HTTP_Request("http://".$service['host'].$service['path'], $options);
$req->setMethod(HTTP_REQUEST_METHOD_POST);
$req->addHeader("Content-Type", "text/xml");
} else {
$out = PLUGIN_EVENT_WEBLOGPING_SEND_SUCCESS . "<br />";
}
+ serendipity_request_end();
if (!defined('SERENDIPITY_IS_XMLRPC') || defined('SERENDIPITY_XMLRPC_VERBOSE')) {
echo $out;
function GetXMLTree($file) {
require_once S9Y_PEAR_PATH . 'HTTP/Request.php';
+ serendipity_request_start();
$req = &new HTTP_Request($file);
if (PEAR::isError($req->sendRequest()) || $req->getResponseCode() != '200') {
// Fetch file
$data = $req->getResponseBody();
}
+ serendipity_request_end();
// Global replacements
// by: waldo@wh-e.com - trim space around tags not within
// Disabled by now. May get enabled in the future, but for now the extra HTTP call isn't worth trying.
return true;
require_once S9Y_PEAR_PATH . 'HTTP/Request.php';
+ serendipity_request_start();
$req = &new HTTP_Request($uri);
if (PEAR::isError($req->sendRequest()) || !preg_match('@^[23]..@', $req->getResponseCode())) {
+ serendipity_request_end();
return false;
} else {
+ serendipity_request_end();
return true;
}
}