N°6889 backup mysqldump call : restore possibility to connect using socket protocol (#591)

With previous fix (N°6123) we forced to use the tcp protocol each time. This was blocking for users wanting to connect using the socket protocol on localhost.

Now for localhost we will : 
- send both port and protocol arguments if the `db_host` config parameter does contain a port
- don't send any of the port or protocol arguments if `db_host` doesn't contain a port
This commit is contained in:
Pierre Goiffon
2023-12-20 15:19:50 +01:00
committed by GitHub
parent 9865bf0779
commit 6995a3c641
4 changed files with 107 additions and 43 deletions

View File

@@ -135,4 +135,37 @@ class CMDBSourceTest extends ItopTestCase
$bIsTlsCnx = $this->InvokeNonPublicStaticMethod(CMDBSource::class, 'IsOpenedDbConnectionUsingTls',[$oMysqli]);
$this->assertFalse($bIsTlsCnx);
}
/**
* @dataProvider InitServerAndPortProvider
* @since 2.7.10 3.0.4 3.1.2 3.2.0 N°6889 method creation to keep track of the behavior change (port will return null)
*/
public function testInitServerAndPort(string $sDbHost, string $sExpectedServer, ?int $iExpectedPort)
{
$sActualServer = null;
$iActualPort = null;
CMDBSource::InitServerAndPort($sDbHost, $sActualServer, $iActualPort);
$this->assertNotNull($sActualServer);
$this->assertEquals($sExpectedServer, $sActualServer);
$this->assertEquals($iExpectedPort, $iActualPort);
}
public function InitServerAndPortProvider()
{
return [
'localhost no port' => ['localhost', 'localhost', null],
'localhost with port' => ['localhost:333306', 'localhost', 333306],
'persistent localhost no port' => ['p:localhost', 'p:localhost', null],
'persistent localhost with port' => ['p:localhost:333306', 'p:localhost', 333306],
'ip no port' => ['192.168.1.10', '192.168.1.10', null],
'ip with port' => ['192.168.1.10:333306', '192.168.1.10', 333306],
'persistent ip no port' => ['p:192.168.1.10', 'p:192.168.1.10', null],
'persistent ip with port' => ['p:192.168.1.10:333306', 'p:192.168.1.10', 333306],
'domain no port' => ['dbserver.mycompany.com', 'dbserver.mycompany.com', null],
'domain with port' => ['dbserver.mycompany.com:333306', 'dbserver.mycompany.com', 333306],
'persistent domain no port' => ['p:dbserver.mycompany.com', 'p:dbserver.mycompany.com', null],
'persistent domain with port' => ['p:dbserver.mycompany.com:333306', 'p:dbserver.mycompany.com', 333306],
];
}
}