From be14953ebbda86df6e1549b60870db089719808c Mon Sep 17 00:00:00 2001
From: Daniel Thor Kristjansson <danielk@cuymedia.net>
Date: Fri, 11 May 2012 15:00:32 -0400
Subject: [PATCH 3/5] merged devel/rtp #3a34be618f

---
 .../libs/libmythtv/recorders/iptvstreamhandler.cpp |   28 ++++++++++++-------
 1 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/mythtv/libs/libmythtv/recorders/iptvstreamhandler.cpp b/mythtv/libs/libmythtv/recorders/iptvstreamhandler.cpp
index 52b7823..188cf0e 100644
--- a/mythtv/libs/libmythtv/recorders/iptvstreamhandler.cpp
+++ b/mythtv/libs/libmythtv/recorders/iptvstreamhandler.cpp
@@ -167,6 +167,7 @@ void IPTVStreamHandler::run(void)
             "", 0);
     }
 
+    bool error = false;
     for (uint i = 0; i < IPTV_SOCKET_COUNT; i++)
     {
         QUrl url = tuning.GetURL(i);
@@ -204,10 +205,14 @@ void IPTVStreamHandler::run(void)
         m_sockets[i]->setSocketDescriptor(
             fd, QAbstractSocket::UnconnectedState, QIODevice::ReadOnly);
 
-        m_sockets[i]->bind(QHostAddress::Any, url.port());
-
         QHostAddress dest_addr(tuning.GetURL(i).host());
 
+        if (!m_sockets[i]->bind(dest_addr, url.port()))
+        {
+            LOG(VB_GENERAL, LOG_ERR, LOC + "Binding to port failed.");
+            error = true;
+        }
+
         if (dest_addr != QHostAddress::Any)
         {
             //m_sockets[i]->joinMulticastGroup(dest_addr); // needs Qt 4.8
@@ -229,15 +234,18 @@ void IPTVStreamHandler::run(void)
         if (!url.userInfo().isEmpty())
             m_sender[i] = QHostAddress(url.userInfo());
     }
-    if (m_use_rtp_streaming)
-        m_buffer = new RTPPacketBuffer(tuning.GetBitrate(0));
-    else
-        m_buffer = new UDPPacketBuffer(tuning.GetBitrate(0));
-    m_write_helper = new IPTVStreamHandlerWriteHelper(this);
-    m_write_helper->Start();
 
-    bool error = false;
-    if (rtsp)
+    if (!error)
+    {
+        if (m_use_rtp_streaming)
+            m_buffer = new RTPPacketBuffer(tuning.GetBitrate(0));
+        else
+            m_buffer = new UDPPacketBuffer(tuning.GetBitrate(0));
+        m_write_helper = new IPTVStreamHandlerWriteHelper(this);
+        m_write_helper->Start();
+    }
+
+    if (!error && rtsp)
     {
         // Start Streaming
         if (!rtsp->Setup(m_sockets[0]->localPort(),
-- 
1.7.5.4

