Index: libs/libmythtv/siparser.cpp
===================================================================
--- libs/libmythtv/siparser.cpp	(revision 9116)
+++ libs/libmythtv/siparser.cpp	(working copy)
@@ -823,16 +823,15 @@
 
         const unsigned char *d;
 
-        d = MPEGDescriptor::Find(list, DescriptorID::conditional_access);
-        if (d)
+        it = list.begin();
+        for (; it != list.end(); ++it)
         {
-            // Note: the saved streams have already been 
-            // descrambled by the CAM so any CA descriptors 
-            // should *not* be added to the descriptor list.
-            // We need a CAPMTObject to send to the CAM though.
-            CAPMTObject cad = ParseDescCA(d, d[1] + 2);
-            e.CA.append(cad);
-            p.hasCA = true;
+            if (DescriptorID::conditional_access == (*it)[0])
+            {
+                CAPMTObject cad = ParseDescCA((*it), (*it)[1] + 2);
+                e.CA.append(cad);
+                p.hasCA = true;
+            }
         }
 
         d = MPEGDescriptor::Find(list, DescriptorID::teletext);
