mirror of
https://github.com/LibreELEC/LibreELEC.tv
synced 2025-09-24 19:46:01 +07:00
37 lines
1.2 KiB
Diff
37 lines
1.2 KiB
Diff
commit 9766e893eb3ed1076e41f89b663b3be122355f39
|
|
Author: Stefan Saraev <stefan@saraev.ca>
|
|
Date: Wed Mar 7 00:13:55 2012 +0200
|
|
|
|
vdr-iptv: protocolhttp socket connect() fix
|
|
|
|
diff --git a/protocolhttp.c b/protocolhttp.c
|
|
index 62abbd6..2d5277a 100644
|
|
--- a/protocolhttp.c
|
|
+++ b/protocolhttp.c
|
|
@@ -42,6 +42,25 @@ bool cIptvProtocolHttp::Connect(void)
|
|
if (!isActive && !isempty(streamAddr) && !isempty(streamPath)) {
|
|
// Ensure that socket is valid and connect
|
|
OpenSocket(socketPort, streamAddr);
|
|
+
|
|
+ // First try only the IP address
|
|
+ sockAddr.sin_addr.s_addr = inet_addr(streamAddr);
|
|
+
|
|
+ if (sockAddr.sin_addr.s_addr == INADDR_NONE) {
|
|
+ debug("Cannot convert %s directly to internet address\n", streamAddr);
|
|
+
|
|
+ // It may be a host name, get the name
|
|
+ struct hostent *host;
|
|
+ host = gethostbyname(streamAddr);
|
|
+ if (!host) {
|
|
+ char tmp[64];
|
|
+ error("%s is not valid address: %s", streamAddr, strerror_r(h_errno, tmp, sizeof(tmp)));
|
|
+ return false;
|
|
+ }
|
|
+
|
|
+ sockAddr.sin_addr.s_addr = inet_addr(*host->h_addr_list);
|
|
+ }
|
|
+
|
|
if (!ConnectSocket()) {
|
|
CloseSocket();
|
|
return false;
|