bool PyCachedCall::Decode(PySubStream **in_ss) { PySubStream *ss = *in_ss; //consume *in_ss = NULL; PySafeDecRef( result ); ss->DecodeData(); if(ss->decoded() == NULL) { SysLog::Error("PyCachedCall","Unable to decode initial stream for PyCachedCall"); PyDecRef( ss ); return false; } if(!ss->decoded()->IsDict()) { SysLog::Error("PyCachedCall","Cached call substream does not contain a dict: %s", ss->decoded()->TypeString()); PyDecRef( ss ); return false; } PyDict *po = (PyDict *) ss->decoded(); PyDict::const_iterator cur, end; cur = po->begin(); end = po->end(); for(; cur != end; cur++) { if(!cur->first->IsString()) continue; PyString *key = (PyString *) cur->first; if( key->content() == "lret" ) result = cur->second->Clone(); } PyDecRef( ss ); return(result != NULL); }