[prev in list] [next in list] [prev in thread] [next in thread] 

List:       helix-server-cvs
Subject:    [Server-cvs] broadcast/transport/rtp/recv qtbcobj.cpp,
From:       svaidhya () helixcommunity ! org
Date:       2009-05-30 21:11:33
Message-ID: 20090530221610.7932430ADD1 () pukcab ! korelogic ! com
[Download RAW message or body]

Update of /cvsroot/server/broadcast/transport/rtp/recv
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv32118

Modified Files:
      Tag: SERVER_13_0
	qtbcobj.cpp 
Log Message:
Synopsis
========
Fix for Switching (to a compatible content) does not happen after an invalid switch \
request was made accidentally


Branches:  SERVER_CURRENT, SERVER_13_0
Reviewer(s):  Jamie

Description
===========

There are 2 problems here

1]
When switching to an inactive RM live feed,
the player went into communicating mode.
This was happening because the after the issuing the s/w request, brcvplin returns a \
HXR_NOT_FOUND (since stream inactive) which flows down to clientSession::FindDone.

FindDone, on seeing a failure, goes ahead and terminates the session (Wrongly), not \
considering that it is a s/w request rather than a normal playback request.

Fix: In case of a failure with s/w request, just populate the log entry and remove \
the req from stack (which is done by the HandleSourceSwitch method, so just call that \
method).

2]
When switching to an inactive RTP live feed,
ideally the player should behave the same way as with RM live streams.
But it worked fine , though the logs were incorrect, because, qtbcplin returns a \
DoesExistDone(HXR_FAIL) for inactive stream instead of DoesExistDone(FALSE). HXR_FAIL \
is considered as TRUE and finally a HXR_OK is returned to FindDone.

FindDone then calls HandleSourceSwitch() which is responsible for doing the \
Switchability check. Now when the clientsession tries to get the Stream for doing the \
Switchability test, it fails. The clientsession gives out a 274 assuming a if the \
stream is inactive it would have already being handled in FindDone(which is correct).

Fix: Change to DoesExistDone(FALSE)


Files Affected
==============

./server/broadcast/transport/rtp/recv/qtbcobj.cpp
./server/engine/session/clientsesion.cpp


Testing Performed
=================
Unit Tests:
None.

Integration Tests:
- Verified the following

FCS Switching
~~~~~~~~~~~~~
1. Switching from OnDemand clip to Inactive live rm stream gives a 404 not found and \
the rest of the  s/w works fine as expected.
2. Switching from OnDemand clip to Inactive live RTP stream gives a 404 not found and \
the rest of  the s/w works fine as expected.
2. Switching from an OnDemand Clip to an Non Existing On Deamnd clip works fine

SSPL
~~~~
1. Empty playlist
2. Playlist where the First clip Doesn't Exist
3. Playlist where no clips exist
4. Playlist with Inactive Live clips works fine and give correct logs

Leak Tests:
- None.

Performance Tests:
None.

Platforms Tested:  win32-i386-vc7
Build verified:    win32-i386-vc7



Index: qtbcobj.cpp
===================================================================
RCS file: /cvsroot/server/broadcast/transport/rtp/recv/qtbcobj.cpp,v
retrieving revision 1.26.2.2.2.20.2.1
retrieving revision 1.26.2.2.2.20.2.2
diff -u -d -r1.26.2.2.2.20.2.1 -r1.26.2.2.2.20.2.2
--- qtbcobj.cpp	4 May 2009 21:36:39 -0000	1.26.2.2.2.20.2.1
+++ qtbcobj.cpp	30 May 2009 21:11:31 -0000	1.26.2.2.2.20.2.2
@@ -1032,7 +1032,7 @@
         {
             if(m_pFEResponse)
             {
-                m_pFEResponse->DoesExistDone(HXR_FAIL);
+                m_pFEResponse->DoesExistDone(FALSE);
                 HX_RELEASE(m_pFEResponse);
             }
             CleanupRegistry();


_______________________________________________
Server-cvs mailing list
Server-cvs@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/server-cvs


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic