vdr-iptv: add -http_socket_connect.patch

This commit is contained in:
Stefan Saraev 2012-03-07 00:42:54 +02:00
parent 2581efaffe
commit 49fc182b6b

View File

@ -0,0 +1,36 @@
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;