[Mailer] read default timeout from ini configurations

This commit is contained in:
azjezz 2020-01-03 14:21:00 +01:00
parent 3945a5c80e
commit dafb057354

View File

@ -26,7 +26,7 @@ final class SocketStream extends AbstractStream
private $url; private $url;
private $host = 'localhost'; private $host = 'localhost';
private $port = 465; private $port = 465;
private $timeout = 5; private $timeout;
private $tls = true; private $tls = true;
private $sourceIp; private $sourceIp;
private $streamContextOptions = []; private $streamContextOptions = [];
@ -40,7 +40,7 @@ final class SocketStream extends AbstractStream
public function getTimeout(): float public function getTimeout(): float
{ {
return $this->timeout; return $this->timeout ?? (float) ini_get('default_socket_timeout');
} }
/** /**
@ -134,17 +134,18 @@ final class SocketStream extends AbstractStream
$options['ssl']['crypto_method'] = $options['ssl']['crypto_method'] ?? STREAM_CRYPTO_METHOD_TLS_CLIENT | STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT | STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT; $options['ssl']['crypto_method'] = $options['ssl']['crypto_method'] ?? STREAM_CRYPTO_METHOD_TLS_CLIENT | STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT | STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT;
$streamContext = stream_context_create($options); $streamContext = stream_context_create($options);
$timeout = $this->getTimeout();
set_error_handler(function ($type, $msg) { set_error_handler(function ($type, $msg) {
throw new TransportException(sprintf('Connection could not be established with host "%s": %s.', $this->url, $msg)); throw new TransportException(sprintf('Connection could not be established with host "%s": %s.', $this->url, $msg));
}); });
try { try {
$this->stream = stream_socket_client($this->url, $errno, $errstr, $this->timeout, STREAM_CLIENT_CONNECT, $streamContext); $this->stream = stream_socket_client($this->url, $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, $streamContext);
} finally { } finally {
restore_error_handler(); restore_error_handler();
} }
stream_set_blocking($this->stream, true); stream_set_blocking($this->stream, true);
stream_set_timeout($this->stream, $this->timeout); stream_set_timeout($this->stream, $timeout);
$this->in = &$this->stream; $this->in = &$this->stream;
$this->out = &$this->stream; $this->out = &$this->stream;
} }