mirror of
https://github.com/the-djmaze/snappymail.git
synced 2024-09-20 15:45:55 +08:00
Move timeout to global MailSo\Net\ConnectSettings
This commit is contained in:
parent
3ccf70e5cd
commit
d756558303
|
@ -69,8 +69,6 @@ class ImapClient extends \MailSo\Net\NetClient
|
|||
{
|
||||
$this->aTagTimeouts['*'] = \microtime(true);
|
||||
|
||||
$this->SetTimeOuts(10, $oSettings->timeout);
|
||||
|
||||
parent::Connect($oSettings);
|
||||
|
||||
$this->setCapabilities($this->getResponse('*'));
|
||||
|
|
|
@ -18,8 +18,7 @@ namespace MailSo\Imap;
|
|||
class Settings extends \MailSo\Net\ConnectSettings
|
||||
{
|
||||
public int
|
||||
$port = 143,
|
||||
$timeout = 300;
|
||||
$port = 143;
|
||||
|
||||
public bool
|
||||
$disable_list_status = false,
|
||||
|
@ -61,8 +60,7 @@ class Settings extends \MailSo\Net\ConnectSettings
|
|||
'force_select' => $this->force_select,
|
||||
'message_all_headers' => $this->message_all_headers,
|
||||
'message_list_limit' => $this->message_list_limit,
|
||||
'search_filter' => $this->message_list_filter,
|
||||
'timeout' => $this->timeout
|
||||
'search_filter' => $this->message_list_filter
|
||||
]
|
||||
);
|
||||
}
|
||||
|
|
|
@ -21,6 +21,11 @@ class ConnectSettings implements \JsonSerializable
|
|||
|
||||
public int $port;
|
||||
|
||||
/**
|
||||
* stream timeout in seconds
|
||||
*/
|
||||
public int $timeout = 10;
|
||||
|
||||
// none, TLS, STARTTLS
|
||||
public int $type = Enumerations\ConnectionSecurityType::AUTO_DETECT;
|
||||
// public int $type = Enumerations\ConnectionSecurityType::NONE;
|
||||
|
@ -52,6 +57,7 @@ class ConnectSettings implements \JsonSerializable
|
|||
$object->host = $aSettings['host'];
|
||||
$object->port = $aSettings['port'];
|
||||
$object->type = isset($aSettings['type']) ? $aSettings['type'] : $aSettings['secure'];
|
||||
$object->timeout = isset($aSettings['timeout']) ? $aSettings['timeout'] : 300;
|
||||
$object->shortLogin = !empty($aSettings['shortLogin']);
|
||||
$object->ssl = SSLContext::fromArray($aSettings['ssl'] ?? []);
|
||||
return $object;
|
||||
|
@ -65,6 +71,7 @@ class ConnectSettings implements \JsonSerializable
|
|||
'host' => $this->host,
|
||||
'port' => $this->port,
|
||||
'type' => $this->type,
|
||||
'timeout' => $this->timeout,
|
||||
'shortLogin' => $this->shortLogin,
|
||||
'ssl' => $this->ssl
|
||||
);
|
||||
|
|
|
@ -34,8 +34,6 @@ abstract class NetClient
|
|||
|
||||
private int $iConnectTimeOut = 10;
|
||||
|
||||
private int $iSocketTimeOut = 10;
|
||||
|
||||
private float $iStartConnectTime = 0;
|
||||
|
||||
/**
|
||||
|
@ -64,10 +62,9 @@ abstract class NetClient
|
|||
return $this->Settings->port;
|
||||
}
|
||||
|
||||
public function SetTimeOuts(int $iConnectTimeOut = 10, int $iSocketTimeOut = 10) : void
|
||||
public function SetTimeOuts(int $iConnectTimeOut = 10) : void
|
||||
{
|
||||
$this->iConnectTimeOut = max(5, $iConnectTimeOut);
|
||||
$this->iSocketTimeOut = max(5, $iSocketTimeOut);
|
||||
$this->iConnectTimeOut = \max(5, $iConnectTimeOut);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -148,8 +145,7 @@ abstract class NetClient
|
|||
|
||||
$this->writeLog('Connect ('.($this->rConnect ? 'success' : 'failed').')');
|
||||
|
||||
if (!$this->rConnect)
|
||||
{
|
||||
if (!$this->rConnect) {
|
||||
$this->writeLogException(
|
||||
new Exceptions\SocketCanNotConnectToHostException(
|
||||
\MailSo\Base\Locale::ConvertSystemString($sErrorStr), (int) $iErrorNo,
|
||||
|
@ -159,11 +155,9 @@ abstract class NetClient
|
|||
|
||||
$this->writeLog((\microtime(true) - $this->iStartConnectTime).' (raw connection)', \LOG_DEBUG);
|
||||
|
||||
if ($this->rConnect)
|
||||
{
|
||||
if (\MailSo\Base\Utils::FunctionCallable('stream_set_timeout'))
|
||||
{
|
||||
\stream_set_timeout($this->rConnect, $this->iSocketTimeOut);
|
||||
if ($this->rConnect) {
|
||||
if (\MailSo\Base\Utils::FunctionCallable('stream_set_timeout')) {
|
||||
\stream_set_timeout($this->rConnect, \max(5, $oSettings->timeout));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -807,7 +807,6 @@ trait Messages
|
|||
|
||||
$oSmtpClient = new \MailSo\Smtp\SmtpClient();
|
||||
$oSmtpClient->SetLogger($this->Logger());
|
||||
$oSmtpClient->SetTimeOuts(10, (int) \RainLoop\Api::Config()->Get('labs', 'smtp_timeout', 60));
|
||||
|
||||
$bUsePhpMail = false;
|
||||
$oAccount->SmtpConnectAndLoginHelper($this->Plugins(), $oSmtpClient, $this->Config(), $bUsePhpMail);
|
||||
|
|
|
@ -281,8 +281,6 @@ class ActionsAdmin extends Actions
|
|||
$bSieveResult = false;
|
||||
$sSieveErrorDesc = '';
|
||||
|
||||
$iConnectionTimeout = 5;
|
||||
|
||||
$oDomain = $this->DomainProvider()->LoadOrCreateNewFromAction($this, 'test.example.com');
|
||||
if ($oDomain)
|
||||
{
|
||||
|
@ -292,7 +290,6 @@ class ActionsAdmin extends Actions
|
|||
{
|
||||
$oImapClient = new \MailSo\Imap\ImapClient();
|
||||
$oImapClient->SetLogger($this->Logger());
|
||||
$oImapClient->SetTimeOuts($iConnectionTimeout);
|
||||
|
||||
$oSettings = $oDomain->ImapSettings();
|
||||
$oImapClient->Connect($oSettings);
|
||||
|
@ -335,7 +332,6 @@ class ActionsAdmin extends Actions
|
|||
{
|
||||
$oSmtpClient = new \MailSo\Smtp\SmtpClient();
|
||||
$oSmtpClient->SetLogger($this->Logger());
|
||||
$oSmtpClient->SetTimeOuts($iConnectionTimeout);
|
||||
|
||||
$oSettings = $oDomain->SmtpSettings();
|
||||
$oSmtpClient->Connect($oSettings, \MailSo\Smtp\SmtpClient::EhloHelper());
|
||||
|
@ -371,7 +367,6 @@ class ActionsAdmin extends Actions
|
|||
{
|
||||
$oSieveClient = new \MailSo\Sieve\SieveClient();
|
||||
$oSieveClient->SetLogger($this->Logger());
|
||||
$oSieveClient->SetTimeOuts($iConnectionTimeout);
|
||||
|
||||
$oSettings = $oDomain->SieveSettings();
|
||||
$oSieveClient->Connect($oSettings);
|
||||
|
|
|
@ -215,9 +215,9 @@ abstract class Account implements \JsonSerializable
|
|||
public function ImapConnectAndLoginHelper(\RainLoop\Plugins\Manager $oPlugins, \MailSo\Imap\ImapClient $oImapClient, \RainLoop\Config\Application $oConfig) : bool
|
||||
{
|
||||
$oSettings = $this->Domain()->ImapSettings();
|
||||
$oSettings->timeout = \max($oSettings->timeout, (int) $oConfig->Get('imap', 'timeout', $oSettings->timeout));
|
||||
$oSettings->Login = $this->IncLogin();
|
||||
|
||||
$oSettings->timeout = \max($oSettings->timeout, (int) $oConfig->Get('imap', 'timeout', $oSettings->timeout));
|
||||
$oSettings->disable_list_status |= !$oConfig->Get('imap', 'use_list_status', true);
|
||||
$oSettings->disable_metadata |= !!$oConfig->Get('imap', 'disable_metadata', false);
|
||||
$oSettings->disable_move |= !$oConfig->Get('imap', 'use_move', true);
|
||||
|
@ -229,7 +229,7 @@ abstract class Account implements \JsonSerializable
|
|||
$oSettings->force_select |= !!$oConfig->Get('imap', 'use_force_selection', false);
|
||||
$oSettings->folder_list_limit = \min($oSettings->folder_list_limit, (int) $oConfig->Get('imap', 'folder_list_limit', 200));
|
||||
$oSettings->message_all_headers |= !!$oConfig->Get('imap', 'message_all_headers', false);
|
||||
$oSettings->message_list_limit = \min($oSettings->message_list_limit, (int) $oConfig->Get('imap', 'message_list_count_limit_trigger', 0));
|
||||
$oSettings->message_list_limit = \max($oSettings->message_list_limit, (int) $oConfig->Get('imap', 'message_list_count_limit_trigger', 0));
|
||||
$oSettings->search_filter = $oSettings->search_filter ?: \trim($oConfig->Get('imap', 'message_list_permanent_filter', ''));
|
||||
// $oSettings->thread_limit = \min($oSettings->thread_limit, (int) $oConfig->Get('imap', 'large_thread_limit', 50));
|
||||
|
||||
|
@ -243,6 +243,7 @@ abstract class Account implements \JsonSerializable
|
|||
public function SmtpConnectAndLoginHelper(\RainLoop\Plugins\Manager $oPlugins, \MailSo\Smtp\SmtpClient $oSmtpClient, \RainLoop\Config\Application $oConfig, bool &$bUsePhpMail = false) : bool
|
||||
{
|
||||
$oSettings = $this->Domain()->SmtpSettings();
|
||||
$oSettings->timeout = \max($oSettings->timeout, (int) $oConfig->Get('labs', 'smtp_timeout', 60));
|
||||
$oSettings->Login = $this->OutLogin();
|
||||
$oSettings->usePhpMail = $bUsePhpMail;
|
||||
$oSettings->Ehlo = \MailSo\Smtp\SmtpClient::EhloHelper();
|
||||
|
@ -262,6 +263,7 @@ abstract class Account implements \JsonSerializable
|
|||
public function SieveConnectAndLoginHelper(\RainLoop\Plugins\Manager $oPlugins, \MailSo\Sieve\SieveClient $oSieveClient, \RainLoop\Config\Application $oConfig)
|
||||
{
|
||||
$oSettings = $this->Domain()->SieveSettings();
|
||||
$oSettings->timeout = \max($oSettings->timeout, (int) $oConfig->Get('labs', 'sieve_timeout', 10));
|
||||
$oSettings->Login = $this->IncLogin();
|
||||
|
||||
$oPlugins->RunHook('sieve.before-connect', array($this, $oSieveClient, $oSettings));
|
||||
|
|
|
@ -33,7 +33,6 @@ class SieveStorage implements FiltersInterface
|
|||
{
|
||||
$oSieveClient = new \MailSo\Sieve\SieveClient();
|
||||
$oSieveClient->SetLogger($this->oLogger);
|
||||
$oSieveClient->SetTimeOuts(10, (int) \RainLoop\Api::Config()->Get('labs', 'sieve_timeout', 10));
|
||||
return $oAccount->SieveConnectAndLoginHelper($this->oPlugins, $oSieveClient, $this->oConfig)
|
||||
? $oSieveClient
|
||||
: null;
|
||||
|
|
Loading…
Reference in a new issue