[vlc-commits] [Git][videolan/vlc][3.0.x] service_discovery/bonjour: fix smb discovery

Hugo Beauzée-Luyssen (@chouquette) gitlab at videolan.org
Fri Dec 3 18:57:44 UTC 2021



Hugo Beauzée-Luyssen pushed to branch 3.0.x at VideoLAN / VLC


Commits:
f759c348 by Marvin Scholz at 2021-12-03T18:45:45+00:00
service_discovery/bonjour: fix smb discovery

The module was checking if it could handle the protocol by checking
if a module matching the module name is present, but for smb the
module names are dsm and smb2.

Fix vlc-ios#917

(cherry picked from commit 08891a8df34c2be265678843d23b3cb3ae23c7c2)

- - - - -


1 changed file:

- modules/services_discovery/bonjour.m


Changes:

=====================================
modules/services_discovery/bonjour.m
=====================================
@@ -78,6 +78,7 @@ vlc_module_end()
 
 NSString *const VLCBonjourProtocolName          = @"VLCBonjourProtocolName";
 NSString *const VLCBonjourProtocolServiceName   = @"VLCBonjourProtocolServiceName";
+NSString *const VLCBonjourProtocolModules       = @"VLCBonjourProtocolModules";
 NSString *const VLCBonjourIsRenderer            = @"VLCBonjourIsRenderer";
 NSString *const VLCBonjourRendererFlags         = @"VLCBonjourRendererFlags";
 NSString *const VLCBonjourRendererDemux         = @"VLCBonjourRendererDemux";
@@ -149,19 +150,23 @@ NSString *const VLCBonjourRendererDemux         = @"VLCBonjourRendererDemux";
 {
     NSDictionary *VLCFtpProtocol = @{ VLCBonjourProtocolName        : @"ftp",
                                       VLCBonjourProtocolServiceName : @"_ftp._tcp.",
-                                      VLCBonjourIsRenderer          : @(NO)
+                                      VLCBonjourIsRenderer          : @(NO),
+                                      VLCBonjourProtocolModules     : @[@"ftp"]
                                       };
     NSDictionary *VLCSmbProtocol = @{ VLCBonjourProtocolName        : @"smb",
                                       VLCBonjourProtocolServiceName : @"_smb._tcp.",
-                                      VLCBonjourIsRenderer          : @(NO)
+                                      VLCBonjourIsRenderer          : @(NO),
+                                      VLCBonjourProtocolModules     : @[@"dsm", @"smb2"]
                                       };
     NSDictionary *VLCNfsProtocol = @{ VLCBonjourProtocolName        : @"nfs",
                                       VLCBonjourProtocolServiceName : @"_nfs._tcp.",
-                                      VLCBonjourIsRenderer          : @(NO)
+                                      VLCBonjourIsRenderer          : @(NO),
+                                      VLCBonjourProtocolModules     : @[@"nfs"]
                                       };
     NSDictionary *VLCSftpProtocol = @{ VLCBonjourProtocolName       : @"sftp",
                                        VLCBonjourProtocolServiceName: @"_sftp-ssh._tcp.",
-                                       VLCBonjourIsRenderer         : @(NO)
+                                       VLCBonjourIsRenderer         : @(NO),
+                                       VLCBonjourProtocolModules     : @[@"sftp"]
                                        };
     NSDictionary *VLCCastProtocol = @{ VLCBonjourProtocolName       : @"chromecast",
                                        VLCBonjourProtocolServiceName: @"_googlecast._tcp.",
@@ -185,10 +190,19 @@ NSString *const VLCBonjourRendererDemux         = @"VLCBonjourRendererDemux";
 
     msg_Info(_p_this, "starting discovery");
     for (NSDictionary *protocol in VLCSupportedProtocols) {
-        /* Only discover services if we actually have a module that can handle those */
-        if (!module_exists([[protocol objectForKey: VLCBonjourProtocolName] UTF8String]) && !_isRendererDiscovery) {
-            msg_Dbg(_p_this, "no module for %s, skipping", [[protocol objectForKey: VLCBonjourProtocolName] UTF8String]);
-            continue;
+        if (!_isRendererDiscovery) {
+            /* Only discover services if we actually have at least one module that can handle their protocol */
+            BOOL canHandle = NO;
+            for (NSString *name in [protocol objectForKey: VLCBonjourProtocolModules]) {
+                if (module_exists([name UTF8String])) {
+                    canHandle = YES;
+                    break;
+                }
+            }
+            if (!canHandle) {
+                msg_Dbg(_p_this, "no module to handle %s, skipping", [[protocol objectForKey: VLCBonjourProtocolName] UTF8String]);
+                continue;
+            }
         }
 
         /* Only discover hosts it they match the current mode (renderer or service) */



View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/f759c3483130847ff43e9e7f436c19acec649116

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/f759c3483130847ff43e9e7f436c19acec649116
You're receiving this email because of your account on code.videolan.org.




More information about the vlc-commits mailing list