const DB_TABLE_PEER_LOOKUP = 'peer_states';
// Constants for database column names
- const DB_COLUMN_PEER_IP = 'peer_ip';
+ const DB_COLUMN_PEER_IP = 'peer_ip';
/**
* Protected constructor
* @return $isNewPeer Wether 'sender' is a new peer to this node
*/
public function isSenderNewPeer (array $packageData) {
- // Get a search criteria instance
- $searchInstance = ObjectFactory::createObjectByConfiguredName('search_criteria_class');
+ // Is always new peer by default
+ $isNewPeer = true;
- // Add 'sender' as the peer's IP (this must already be looked up!)
- $searchInstance->addCriteria(self::DB_COLUMN_PEER_IP, $packageData['sender']);
- $searchInstance->setLimit(1);
+ // Remove session id > IP:port
+ $ipPort = HubTools::resolveSessionId($packageData[NetworkPackage::INDEX_PACKAGE_SENDER]);
- // Count the query
- $entries = $this->doSelectCountByCriteria($searchInstance);
+ // Is it not invalid:invalid?
+ if ($ipPort != 'invalid:invalid') {
+ // Get a search criteria instance
+ $searchInstance = ObjectFactory::createObjectByConfiguredName('search_criteria_class');
- // Is it there?
- $isNewPeer = ($entries === 0);
+ // Add 'sender' as the peer's IP address
+ $searchInstance->addCriteria(self::DB_COLUMN_PEER_IP, $ipPort);
+ $searchInstance->setLimit(1);
+
+ // Count the query
+ $entries = $this->doSelectCountByCriteria($searchInstance);
+
+ // Is it there?
+ $isNewPeer = ($entries === 0);
+ } // END - if
// Return the result
return $isNewPeer;