From edcd18e8f5d907af06c626b710d93b683244375f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20B=C3=BCttner?= Date: Mon, 22 May 2017 22:59:01 +0200 Subject: [PATCH] Revert "Implemented strict http request serialization for APIs that forbid a session to be used in concurrent requests (e.g. dedimania)." This reverts commit b0732bee9661d953bfbeaa51cac8007eac830dc5. Solution required PHP 7.0.7, thus breaking requirement of compatibility with PHP 5.4. --- core/Files/AsyncHttpRequest.php | 11 ------ core/Files/AsynchronousFileReader.php | 37 ++++++------------- libs/curl-easy/cURL/Request.php | 26 +------------ libs/curl-easy/cURL/RequestsQueue.php | 8 ---- .../MCTeam/Dedimania/DedimaniaWebHandler.php | 7 ---- 5 files changed, 12 insertions(+), 77 deletions(-) diff --git a/core/Files/AsyncHttpRequest.php b/core/Files/AsyncHttpRequest.php index a7f5de4a..4fe45ca2 100644 --- a/core/Files/AsyncHttpRequest.php +++ b/core/Files/AsyncHttpRequest.php @@ -36,7 +36,6 @@ class AsyncHttpRequest implements UsageInformationAble { private $contentType = 'text/xml; charset=UTF-8;'; private $timeout = 60; private $headers = array(); - private $serialize = false; public function __construct($maniaControl, $url) { $this->maniaControl = $maniaControl; @@ -59,7 +58,6 @@ class AsyncHttpRequest implements UsageInformationAble { ->set(CURLOPT_RETURNTRANSFER, true)// ->set(CURLOPT_FOLLOWLOCATION, true)// support redirect ->set(CURLOPT_SSL_VERIFYPEER, false); - $request->setSerialize($this->serialize); // serialize requests to this host return $request; } @@ -230,13 +228,4 @@ class AsyncHttpRequest implements UsageInformationAble { public function setTimeout($timeout) { $this->timeout = $timeout; } - - /** - * Sets whether the request to the same host should be serialized. - * - * @param bool $serialize - */ - public function setSerialize($serialize = true) { - $this->serialize = $serialize; - } } \ No newline at end of file diff --git a/core/Files/AsynchronousFileReader.php b/core/Files/AsynchronousFileReader.php index a9c06ae8..237f721d 100644 --- a/core/Files/AsynchronousFileReader.php +++ b/core/Files/AsynchronousFileReader.php @@ -23,9 +23,6 @@ class AsynchronousFileReader implements UsageInformationAble { */ const CONTENT_TYPE_JSON = 'application/json'; - const QUEUE_NONSERIALIZING = 0; - const QUEUE_SERIALIZING = 1; - /* * Private properties */ @@ -33,7 +30,7 @@ class AsynchronousFileReader implements UsageInformationAble { private $maniaControl = null; /** @var \cURL\RequestsQueue|null $requestQueue */ - private $requestQueue = array(null, null); + private $requestQueue = null; /** * Construct a new Asynchronous File Reader Instance @@ -42,30 +39,22 @@ class AsynchronousFileReader implements UsageInformationAble { */ public function __construct(ManiaControl $maniaControl) { $this->maniaControl = $maniaControl; - - // Queue for non-serializing requests (parallel is preferred) - $this->requestQueue[self::QUEUE_NONSERIALIZING] = new RequestsQueue(); - - // Queue for per host serialized requests - $this->requestQueue[self::QUEUE_SERIALIZING] = new RequestsQueue(); - $this->requestQueue[self::QUEUE_SERIALIZING]->setOption(CURLMOPT_MAX_HOST_CONNECTIONS, 1); + $this->requestQueue = new RequestsQueue(); } /** * Append available Data of active Requests */ public function appendData() { - foreach ($this->requestQueue as &$queue) { - do { - if (($count = $queue->count()) == 0) { - break; - } + do { + if (($count = $this->requestQueue->count()) == 0) { + break; + } - if ($queue->socketPerform()) { - $queue->socketSelect(); - } - } while ($count != $queue->count()); - } + if ($this->requestQueue->socketPerform()) { + $this->requestQueue->socketSelect(); + } + } while ($count != $this->requestQueue->count()); } /** @@ -107,10 +96,6 @@ class AsynchronousFileReader implements UsageInformationAble { * @param Request $request */ public function addRequest(Request $request) { - $queueId = $request->getSerialize() - ? self::QUEUE_SERIALIZING - : self::QUEUE_NONSERIALIZING; - $queue = $this->requestQueue[$queueId]; - $request->attachTo($queue); + $request->attachTo($this->requestQueue); } } diff --git a/libs/curl-easy/cURL/Request.php b/libs/curl-easy/cURL/Request.php index 8b174dd9..6fb263b0 100644 --- a/libs/curl-easy/cURL/Request.php +++ b/libs/curl-easy/cURL/Request.php @@ -19,11 +19,6 @@ class Request extends EventDispatcher implements RequestInterface * @var Options Object containing options for current request */ protected $options = null; - - /** - * @var bool Whether requests to the target host should be serialized or not. - */ - protected $serializeRequests = false; /** * Create new cURL handle @@ -126,8 +121,7 @@ class Request extends EventDispatcher implements RequestInterface * @param \cURL\RequestsQueue $requestsQueue * @throws \cURL\Exception */ - public function attachTo(RequestsQueue $requestsQueue) - { + public function attachTo(RequestsQueue $requestsQueue) { if (isset($this->queue)) { throw new Exception('Already bound to a RequestQueue.'); } @@ -135,24 +129,6 @@ class Request extends EventDispatcher implements RequestInterface $this->queue->attach($this); } - /** - * Whether to serialize requests to the same host or not. - * - * @param bool $serialize - */ - public function setSerialize($serialize = true) - { - $this->serializeRequests = $serialize; - } - - /** - * @return bool - */ - public function getSerialize() - { - return $this->serializeRequests; - } - /** * Creates new RequestsQueue with single Request attached to it * and calls RequestsQueue::socketPerform() method. diff --git a/libs/curl-easy/cURL/RequestsQueue.php b/libs/curl-easy/cURL/RequestsQueue.php index 25864fc2..4b99826b 100644 --- a/libs/curl-easy/cURL/RequestsQueue.php +++ b/libs/curl-easy/cURL/RequestsQueue.php @@ -217,12 +217,4 @@ class RequestsQueue extends EventDispatcher implements RequestsQueueInterface, \ } return curl_multi_select($this->mh, $timeout) !== -1; } - - /** - * @param $option - * @param $value - */ - public function setOption($option, $value) { - curl_multi_setopt($this->mh, $option, $value); - } } diff --git a/plugins/MCTeam/Dedimania/DedimaniaWebHandler.php b/plugins/MCTeam/Dedimania/DedimaniaWebHandler.php index f80bb980..22522c71 100644 --- a/plugins/MCTeam/Dedimania/DedimaniaWebHandler.php +++ b/plugins/MCTeam/Dedimania/DedimaniaWebHandler.php @@ -83,7 +83,6 @@ class DedimaniaWebHandler implements TimerListener { $asyncHttpRequest->setContent($content); $asyncHttpRequest->setCompression(true); $asyncHttpRequest->setTimeout(500); - $asyncHttpRequest->setSerialize(); $asyncHttpRequest->postData(); } @@ -172,7 +171,6 @@ class DedimaniaWebHandler implements TimerListener { $asyncHttpRequest->setContent($content); $asyncHttpRequest->setCompression(true); $asyncHttpRequest->setTimeout(500); - $asyncHttpRequest->setSerialize(); $asyncHttpRequest->postData(); return true; @@ -220,7 +218,6 @@ class DedimaniaWebHandler implements TimerListener { $asyncHttpRequest->setContent($content); $asyncHttpRequest->setCompression(true); $asyncHttpRequest->setTimeout(500); - $asyncHttpRequest->setSerialize(); $asyncHttpRequest->postData(); } @@ -312,7 +309,6 @@ class DedimaniaWebHandler implements TimerListener { $asyncHttpRequest->setContent($content); $asyncHttpRequest->setCompression(false); $asyncHttpRequest->setTimeout(500); - $asyncHttpRequest->setSerialize(); $asyncHttpRequest->postData(); } @@ -365,7 +361,6 @@ class DedimaniaWebHandler implements TimerListener { $asyncHttpRequest->setContent($content); $asyncHttpRequest->setCompression(true); $asyncHttpRequest->setTimeout(500); - $asyncHttpRequest->setSerialize(); $asyncHttpRequest->postData(); } @@ -408,7 +403,6 @@ class DedimaniaWebHandler implements TimerListener { $asyncHttpRequest->setContent($content); $asyncHttpRequest->setCompression(true); $asyncHttpRequest->setTimeout(500); - $asyncHttpRequest->setSerialize(); $asyncHttpRequest->postData(); } @@ -453,7 +447,6 @@ class DedimaniaWebHandler implements TimerListener { $asyncHttpRequest->setContent($content); $asyncHttpRequest->setCompression(true); $asyncHttpRequest->setTimeout(500); - $asyncHttpRequest->setSerialize(); $asyncHttpRequest->postData(); }