Changeset 1855


Ignore:
Timestamp:
Aug 21, 2010, 1:57:25 PM (11 years ago)
Author:
Sven Rech
Message:

quadratic sieve fix

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/QuadraticSieve/PeerToPeer.cs

    r1854 r1855  
    587587        public bool SyncFactorManager(FactorManager factorManager)
    588588        {
    589             FactorManager dhtFactorManager = null;
    590             //load DHT Factor Manager:
    591             byte[] dhtFactorManagerBytes = P2PManager.Retrieve(FactorListIdentifier()).Data;
    592             if (dhtFactorManagerBytes != null)
    593             {
    594                 MemoryStream memstream = new MemoryStream();
    595                 memstream.Write(dhtFactorManagerBytes, 0, dhtFactorManagerBytes.Length);
    596                 memstream.Position = 0;
    597                 BinaryFormatter bformatter = new BinaryFormatter();
    598                 bformatter.AssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple;
    599                 try
     589            try
     590            {
     591                FactorManager dhtFactorManager = null;
     592                //load DHT Factor Manager:
     593                byte[] dhtFactorManagerBytes = P2PManager.Retrieve(FactorListIdentifier()).Data;
     594                if (dhtFactorManagerBytes != null)
    600595                {
    601                     dhtFactorManager = (FactorManager)bformatter.Deserialize(memstream);
     596                    MemoryStream memstream = new MemoryStream();
     597                    memstream.Write(dhtFactorManagerBytes, 0, dhtFactorManagerBytes.Length);
     598                    memstream.Position = 0;
     599                    BinaryFormatter bformatter = new BinaryFormatter();
     600                    bformatter.AssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple;
     601                    try
     602                    {
     603                        dhtFactorManager = (FactorManager)bformatter.Deserialize(memstream);
     604                    }
     605                    catch (System.Runtime.Serialization.SerializationException)
     606                    {
     607                        P2PWarning("DHT factor list is broken!");
     608                        P2PManager.Remove(FactorListIdentifier());
     609                        return SyncFactorManager(factorManager);
     610                    }
    602611                }
    603                 catch (System.Runtime.Serialization.SerializationException)
     612
     613                //Synchronize DHT Factor Manager with our Factor List
     614                if (dhtFactorManager == null || factorManager.Synchronize(dhtFactorManager))
    604615                {
    605                     P2PWarning("DHT factor list is broken!");
    606                     P2PManager.Remove(FactorListIdentifier());
    607                     return SyncFactorManager(factorManager);
    608                 }               
    609             }
    610 
    611             //Synchronize DHT Factor Manager with our Factor List
    612             if (dhtFactorManager == null || factorManager.Synchronize(dhtFactorManager))
    613             {
    614                 //Our Factor Manager has more informations, so let's store it in the DHT:
    615                 MemoryStream memstream = new MemoryStream();
    616                 BinaryFormatter bformatter = new BinaryFormatter();
    617                 bformatter.AssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple;
    618                 bformatter.Serialize(memstream, factorManager);
    619                 bool success = P2PManager.Store(FactorListIdentifier(), memstream.ToArray()).IsSuccessful();
    620                 if (!success)
    621                 {
    622                     Thread.Sleep(1000);
    623                     return SyncFactorManager(factorManager);       //Just try again
     616                    //Our Factor Manager has more informations, so let's store it in the DHT:
     617                    MemoryStream memstream = new MemoryStream();
     618                    BinaryFormatter bformatter = new BinaryFormatter();
     619                    bformatter.AssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple;
     620                    bformatter.Serialize(memstream, factorManager);
     621                    bool success = P2PManager.Store(FactorListIdentifier(), memstream.ToArray()).IsSuccessful();
     622                    if (!success)
     623                    {
     624                        Thread.Sleep(1000);
     625                        return SyncFactorManager(factorManager);       //Just try again
     626                    }
    624627                }
    625             }
    626 
    627             return factorManager.ContainsComposite(this.factor);
     628
     629                return factorManager.ContainsComposite(this.factor);
     630            }
     631            catch (NotConnectedException)
     632            {
     633                return true;
     634            }
    628635        }
    629636
Note: See TracChangeset for help on using the changeset viewer.