]> git.mxchange.org Git - hub.git/blobdiff - application/hub/main/database/wrapper/class_PeerStateLookupDatabaseWrapper.php
New exception and interface added, continued development:
[hub.git] / application / hub / main / database / wrapper / class_PeerStateLookupDatabaseWrapper.php
index a6634d1ff6b8c915b5d0a26eb63660577e618f26..10c2813b5dc0a829d49e80be64ae6f3cfe47bae0 100644 (file)
@@ -26,7 +26,7 @@ class PeerStateLookupDatabaseWrapper extends BaseDatabaseWrapper {
        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
@@ -70,18 +70,27 @@ class PeerStateLookupDatabaseWrapper extends BaseDatabaseWrapper {
         * @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;