bool NetworkConnectorEngine::tryServeWishListItem() {
    const bool hasIpv6 =
        !Connection::Ipv6AddressesEqual(iController->getNode().ipv6Addr(),
                                        KNullIpv6Addr) ;
    iModel->lock() ;
    Node* n = iModel->nodeModel().nextConnectionWishListItem()  ;
    iModel->unlock() ;
    if ( n ) {
        QHostAddress addrOfNode ;
        if (n->DNSAddr().length() > 0 &&
                performDNSLookup(&addrOfNode,
                                 n->DNSAddr(),
                                 hasIpv6 )) {
            addrOfNode.setAddress(n->DNSAddr()) ;
        } else {
            if (!Connection::Ipv6AddressesEqual( n->ipv6Addr(),
                                                 KNullIpv6Addr ) 
		&& // try connect only if we ourselves have ipv6:
		hasIpv6 ) {
                addrOfNode.setAddress( n->ipv6Addr() ) ;
            } else if (  n->ipv4Addr() ) {
                addrOfNode.setAddress( n->ipv4Addr() ) ;
            } else {
                // tor addresses?
                delete n ;
                LOG_STR("Connection wishlist-item had no ipv4/ipv6/dns addr") ;
                return false ;
            }
        }
        iModel->lock() ;
        for ( int i = 0 ; i < iAddressesInOrderToConnect.size() ; i++ ) {

            MNodeModelProtocolInterface::HostConnectQueueItem addrFromList = iAddressesInOrderToConnect.at(0) ;
            if (addrFromList.iAddress == addrOfNode ) {
                // item is already on our list -> discard
                delete n ;
                LOG_STR("Connection wishlist-item was already on list..") ;
                iModel->unlock() ;
                return false ;
            }
        }
        iModel->unlock() ;
        spawnNewConnection(addrOfNode,
                           n->port(),
                           n->nodeFingerPrint()) ;
        delete n ;
        return true ;

    } else {
        return false ; // nothing on wishlist
    }
}