private function processResponse($m) { $dom = $m->dom; $headerNode = $m->headerNode; $originalMsgId = $m->msgId; $this->originalMsgId = $m->msgId; $originalSourceId = $m->sourceId; $version = $m->version; $this->originalSourceId = $originalSourceId; $this->originalMsgId = $originalMsgId; $validSourceId = Agent::checkSourceId($originalSourceId); if (!$validSourceId) { RegisterError::invalidSourceId($agent->sourceId, $originalMsgId); exit; } else { $agent = new Agent($originalSourceId); if (!$agent->isRegistered()) { RegisterError::notRegisteredError($originalSourceId, $originalMsgId); exit; } else { $msgId = $dom->getElementsByTagName('SIF_RequestMsgId')->item(0)->nodeValue; if (!RequestObject::validRequestMsgId($msgId)) { RequestError::invalidMsgId($originalSourceId, $originalMsgId); } else { $requestObject = new RequestObject($msgId); $sifResponseNode = $dom->getElementsByTagName('SIF_Response')->item(0); $size = strlen($dom->saveXML($sifResponseNode)); if (!$requestObject->compareBufferSize($size)) { $categoryCode = "8"; $sifCode = "11"; $shortDesc = "Response Error"; $longDesc = "SIF_Response is larger than requested SIF_MaxBufferSize"; $this->createResponseError($agent, $msgId, $categoryCode, $sifCode, $shortDesc, $longDesc); SifLogEntry::CreateSifLogEvents($dom->saveXml($headerNode), 4, 2, 'Invalid buffersize for response to agent ' . $agent->sourceId . ' request'); RequestError::invalidBufferSize($originalSourceId, $originalMsgId); } else { $destinationId = $dom->getElementsByTagName('SIF_DestinationId')->item(0)->nodeValue; if (!$requestObject->compareDestinationId($destinationId)) { $categoryCode = "8"; $sifCode = "14"; $shortDesc = "Response Error"; $longDesc = "SIF_DestinationId does not match SIF_SourceId from SIF_Request"; $this->createResponseError($agent, $msgId, $categoryCode, $sifCode, $shortDesc, $longDesc); SifLogEntry::CreateSifLogEvents($dom->saveXml($headerNode), 4, 1, 'Invalid destinationId for response to agent ' . $agent->sourceId . ' request'); RequestError::invalidDestination($originalSourceId, $originalMsgId); } else { if (RequestObject::validMessageVersion($msgId, $version)) { if (ResponseObject::responseExist($msgId)) { $responseObject = new ResponseObject($msgId); $packetNum = $dom->getElementsByTagName('SIF_PacketNumber')->item(0)->nodeValue; if ($packetNum != $responseObject->nextPacketNum) { $categoryCode = "8"; $sifCode = "12"; $shortDesc = "SIF_PacketNumber is invalid in SIF_Response"; $longDesc = 'Invalid packet number of ' . $packetNum . ' was expecting ' . $responseObject->nextPacketNum . 'for response to agent ' . $agent->sourceId . ' request'; //$this->createResponseError($agent, $msgId, $categoryCode, $sifCode, $shortDesc, $longDesc); RequestError::invalidPacketNum($originalSourceId, $originalMsgId, $longDesc); } else { $this->setupResponseOld($agent, $msgId, $responseObject); } } else { $packetNum = $dom->getElementsByTagName('SIF_PacketNumber')->item(0)->nodeValue; if ($packetNum != 1) { $categoryCode = "8"; $sifCode = "12"; $shortDesc = "Response Error"; $longDesc = 'Invalid packet number of ' . $packetNum . ' was expecting 1 for response to agent ' . $agent->sourceId . ' request'; RequestError::invalidPacketNum($originalSourceId, $originalMsgId, $longDesc); } else { $this->setupResponseNew($agent, $msgId, $m); } //check if packetnum is 1 } //check if response with more packets } else { $categoryCode = "8"; $sifCode = "13"; $shortDesc = "Response Error"; $longDesc = "SIF_Response does not match any SIF_Version from SIF_Request."; $this->createResponseError($agent, $msgId, $categoryCode, $sifCode, $shortDesc, $longDesc); RequestError::invalidVersion($originalSourceId, $originalMsgId); } //check if version is valid } // check if valid destination } //check if valid buffer } //check if valid request message id } //check if registered } //check sourceId }