From 7e6f3817d07645be5b56becca6ba1a6934f6a2c2 Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Mon, 18 Nov 2013 12:27:30 +0100 Subject: [PATCH] SMB ignore connection errors when NetBIOS is disabled When NetBIOS is blocked or disabled, a smb::look() call can still get the list of shares from smbclient, even though the name resolution at the end of the command fails. This fix makes it ignore the connection error if we already got the list of shares. Fixed #5860 --- apps/files_external/3rdparty/smb4php/smb.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/apps/files_external/3rdparty/smb4php/smb.php b/apps/files_external/3rdparty/smb4php/smb.php index 1a6cd05590..9650f80904 100644 --- a/apps/files_external/3rdparty/smb4php/smb.php +++ b/apps/files_external/3rdparty/smb4php/smb.php @@ -127,6 +127,7 @@ class smb { $old_locale = getenv('LC_ALL'); putenv('LC_ALL=en_US.UTF-8'); $output = popen (SMB4PHP_SMBCLIENT." -N {$auth} {$options} {$port} {$options} {$params} 2>/dev/null", 'r'); + $gotInfo = false; $info = array (); $info['info']= array (); $mode = ''; @@ -188,7 +189,12 @@ class smb { } trigger_error($regs[0].' params('.$params.')', E_USER_ERROR); case 'error-connect': - return false; + // connection error can happen after obtaining share list if + // NetBIOS is disabled/blocked on the target server, + // in which case we keep the info and continue + if (!$gotInfo) { + return false; + } } if ($i) switch ($i[1]) { case 'file': @@ -196,6 +202,7 @@ class smb { case 'disk': case 'server': case 'workgroup': $info[$i[1]][] = $i[0]; + $gotInfo = true; } } pclose($output);