vlc | branch: master | Thomas Guillem <[email protected]> | Fri Nov 23 16:19:00 2018 +0100| [e9c9d72f504bd61d661b86b20ed56130d9e7166d] | committer: Thomas Guillem
smb2: refactor for next commit vlc_smb2_resolve() now returns the resolved host instead of modifying the host argument. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=e9c9d72f504bd61d661b86b20ed56130d9e7166d --- modules/access/smb2.c | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/modules/access/smb2.c b/modules/access/smb2.c index e81511cc53..a99512d623 100644 --- a/modules/access/smb2.c +++ b/modules/access/smb2.c @@ -534,48 +534,43 @@ error: return -1; } -static int -vlc_smb2_resolve(stream_t *access, char **host, unsigned port) +static char * +vlc_smb2_resolve(stream_t *access, const char *host, unsigned port) { (void) access; - if (!*host) - return -1; + if (!host) + return NULL; #ifdef HAVE_DSM /* Test if the host is an IP */ struct in_addr addr; - if (inet_pton(AF_INET, *host, &addr) == 1) - return 0; + if (inet_pton(AF_INET, host, &addr) == 1) + return NULL; /* Test if the host can be resolved */ struct addrinfo *info = NULL; - if (vlc_getaddrinfo_i11e(*host, port, NULL, &info) == 0) + if (vlc_getaddrinfo_i11e(host, port, NULL, &info) == 0) { freeaddrinfo(info); /* Let smb2 resolve it */ - return 0; + return NULL; } /* Test if the host is a netbios name */ + char *out_host = NULL; netbios_ns *ns = netbios_ns_new(); uint32_t ip4_addr; - int ret = -1; - if (netbios_ns_resolve(ns, *host, NETBIOS_FILESERVER, &ip4_addr) == 0) + if (netbios_ns_resolve(ns, host, NETBIOS_FILESERVER, &ip4_addr) == 0) { char ip[] = "xxx.xxx.xxx.xxx"; if (inet_ntop(AF_INET, &ip4_addr, ip, sizeof(ip))) - { - free(*host); - *host = strdup(ip); - if (*host) - ret = 0; - } + out_host = strdup(ip); } netbios_ns_destroy(ns); - return ret; + return out_host; #else (void) port; - return 0; + return NULL; #endif } @@ -599,8 +594,13 @@ Open(vlc_object_t *p_obj) goto error; sys->encoded_url.i_port = 0; - if (vlc_smb2_resolve(access, &sys->encoded_url.psz_host, CIFS_PORT)) - goto error; + char *resolved_host = vlc_smb2_resolve(access, sys->encoded_url.psz_host, + CIFS_PORT); + if (resolved_host) + { + free(sys->encoded_url.psz_host); + sys->encoded_url.psz_host = resolved_host; + } if (sys->encoded_url.psz_path == NULL) sys->encoded_url.psz_path = (char *) "/"; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
