Index: sipXcallLib/src/cp/SipConnection.cpp
===================================================================
--- sipXcallLib/src/cp/SipConnection.cpp	(revision 12799)
+++ sipXcallLib/src/cp/SipConnection.cpp	(working copy)
@@ -2627,8 +2627,29 @@
 #endif
 
                 // Far side requested hold
-                if(remoteRtpPort == 0 ||
-                    remoteRtpAddress.compareTo("0.0.0.0") == 0)
+
+                const SdpBody * reinviteSdp = request->getSdpBody();
+                UtlString reInviteMediaType;
+                UtlString reInviteMediaTransportType;
+                int reInviteMediaPort;
+                int reInviteMediaPortPairs;
+                int reInviteMaxPaylordTypes = 1;
+                int reInviteNumPayloadTypes;
+                int reInvitePayloadTypes[2];
+                int reInviteMediaIndex = 0;
+                SdpDirectionality reInviteDirectionality;
+
+                reinviteSdp->getMediaData(reInviteMediaIndex, 
+                    &reInviteMediaType,
+                    &reInviteMediaPort, 
+                    &reInviteMediaPortPairs,
+                    &reInviteMediaTransportType,
+                    reInviteMaxPaylordTypes, 
+                    &reInviteNumPayloadTypes,
+                    reInvitePayloadTypes,
+                    &reInviteDirectionality);
+
+                if(reInviteDirectionality == sdpDirectionalitySendOnly)
                 {
                     //receiveRtpPort = 0;
                     // Leave the receive on to drain the buffers
@@ -2646,7 +2667,7 @@
                     
                     mRemoteRequestedHold = TRUE;
                 }
-                else if(remoteRtpPort > 0)
+                else if(reInviteDirectionality == sdpDirectionalitySendRecv)
                 {
                     mpMediaInterface->startRtpReceive(mConnectionId,
                         numMatchingCodecs, matchingCodecs, srtpParams);
