Files
LibreELEC.tv/packages/3rdparty/multimedia/vdr-iptv/patches/vdr-iptv-0.5.0-http_socket_connect.patch
2012-03-07 00:42:54 +02:00

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;