diff --git a/lib/php/lib/Transport/TSocket.php b/lib/php/lib/Transport/TSocket.php index fb74fdbf6aa..c220a8b066b 100644 --- a/lib/php/lib/Transport/TSocket.php +++ b/lib/php/lib/Transport/TSocket.php @@ -218,7 +218,7 @@ public function open() throw new TTransportException('Cannot open null host', TTransportException::NOT_OPEN); } - if ($this->port_ <= 0) { + if ($this->port_ <= 0 && strpos($this->host_, 'unix://') !== 0) { throw new TTransportException('Cannot open without port', TTransportException::NOT_OPEN); } diff --git a/lib/php/test/Unit/Lib/Transport/TSocketTest.php b/lib/php/test/Unit/Lib/Transport/TSocketTest.php index 6bab297ea2d..3a6a5ebfab1 100644 --- a/lib/php/test/Unit/Lib/Transport/TSocketTest.php +++ b/lib/php/test/Unit/Lib/Transport/TSocketTest.php @@ -246,6 +246,33 @@ public function testOpenPersist() $this->assertTrue($transport->isOpen()); } + public function testOpenUnixSocket() + { + $host = 'unix:///tmp/ipc.sock'; + $port = -1; + $persist = false; + $debugHandler = null; + + $this->getFunctionMock('Thrift\Transport', 'fsockopen') + ->expects($this->once()) + ->with( + $host, + $port, + $this->anything(), #$errno, + $this->anything(), #$errstr, + $this->anything() #$this->sendTimeoutSec_ + ($this->sendTimeoutUsec_ / 1000000), + ); + + $transport = new TSocket( + $host, + $port, + $persist, + $debugHandler + ); + + $transport->open(); + } + /** * @dataProvider open_THRIFT_5132_DataProvider */