aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--library/IXR_Library.php61
1 files changed, 18 insertions, 43 deletions
diff --git a/library/IXR_Library.php b/library/IXR_Library.php
index c249c4845..cb27973bb 100644
--- a/library/IXR_Library.php
+++ b/library/IXR_Library.php
@@ -606,7 +606,7 @@ class IXR_Client
if (!$path) {
// Assume we have been given a URL instead
$bits = parse_url($server);
- $this->server = $bits['host'];
+ $this->server = $server;
$this->port = isset($bits['port']) ? $bits['port'] : 80;
$this->path = isset($bits['path']) ? $bits['path'] : '/';
@@ -634,64 +634,39 @@ class IXR_Client
$request = "POST {$this->path} HTTP/1.0$r";
// Merged from WP #8145 - allow custom headers
- $this->headers['Host'] = $this->server;
$this->headers['Content-Type'] = 'text/xml';
$this->headers['User-Agent'] = $this->useragent;
$this->headers['Content-Length']= $length;
+
+ $headers = [];
+
foreach( $this->headers as $header => $value ) {
- $request .= "{$header}: {$value}{$r}";
+ $headers[] .= "{$header}: {$value}";
}
- $request .= $r;
- $request .= $xml;
- // Now send the request
- if ($this->debug) {
- echo '<pre class="ixr_request">'.htmlspecialchars($request)."\n</pre>\n\n";
- }
+ //logger('server: ' . $this->server);
+ //logger('xml: ' . $xml);
+ //logger('headers: ' . print_r($headers,true));
- if ($this->timeout) {
- $fp = @fsockopen($this->server, $this->port, $errno, $errstr, $this->timeout);
- } else {
- $fp = @fsockopen($this->server, $this->port, $errno, $errstr);
- }
- if (!$fp) {
+
+ $retries = 0;
+ $result = z_post_url($this->server,$xml,$retries, [ 'headers' => $headers] );
+
+ // logger('result: ' . print_r($result,true));
+
+ if (! $result['success']) {
$this->error = new IXR_Error(-32300, 'transport error - could not open socket');
return false;
}
- fputs($fp, $request);
- $contents = '';
- $debugContents = '';
- $gotFirstLine = false;
- $gettingHeaders = true;
- while (!feof($fp)) {
- $line = fgets($fp, 4096);
- if (!$gotFirstLine) {
- // Check line for '200'
- if (strstr($line, '200') === false) {
- $this->error = new IXR_Error(-32300, 'transport error - HTTP status code was not 200');
- return false;
- }
- $gotFirstLine = true;
- }
- if (trim($line) == '') {
- $gettingHeaders = false;
- }
- if (!$gettingHeaders) {
- // merged from WP #12559 - remove trim
- $contents .= $line;
- }
- if ($this->debug) {
- $debugContents .= $line;
- }
- }
+
if ($this->debug) {
- echo '<pre class="ixr_response">'.htmlspecialchars($debugContents)."\n</pre>\n\n";
+ echo '<pre class="ixr_response">'.htmlspecialchars($result['header'] . "\n\n" . $result['body'])."\n</pre>\n\n";
}
// Now parse what we've got back
- $this->message = new IXR_Message($contents);
+ $this->message = new IXR_Message($result['body']);
if (!$this->message->parse()) {
// XML error
$this->error = new IXR_Error(-32700, 'parse error. not well formed');