From 49fc182b6ba4e63859d3ef43dbc02d039f0722e9 Mon Sep 17 00:00:00 2001 From: Stefan Saraev Date: Wed, 7 Mar 2012 00:42:54 +0200 Subject: [PATCH] vdr-iptv: add -http_socket_connect.patch --- .../vdr-iptv-0.5.0-http_socket_connect.patch | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 packages/3rdparty/multimedia/vdr-iptv/patches/vdr-iptv-0.5.0-http_socket_connect.patch diff --git a/packages/3rdparty/multimedia/vdr-iptv/patches/vdr-iptv-0.5.0-http_socket_connect.patch b/packages/3rdparty/multimedia/vdr-iptv/patches/vdr-iptv-0.5.0-http_socket_connect.patch new file mode 100644 index 0000000000..866c7f70ea --- /dev/null +++ b/packages/3rdparty/multimedia/vdr-iptv/patches/vdr-iptv-0.5.0-http_socket_connect.patch @@ -0,0 +1,36 @@ +commit 9766e893eb3ed1076e41f89b663b3be122355f39 +Author: Stefan Saraev +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;