Changeset 1819


Ignore:
Timestamp:
Aug 17, 2010, 10:11:03 AM (11 years ago)
Author:
Sven Rech
Message:

fixed stop bug in quadratic sieve plugin

Location:
trunk
Files:
6 edited

Legend:

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

    r1773 r1819  
    479479        {
    480480            stopLoadStoreThread = true;
    481             loadStoreThread.Interrupt();
    482             loadStoreThread.Join();
    483             loadStoreThread = null;
     481            if (loadStoreThread != null)
     482            {
     483                loadStoreThread.Interrupt();
     484                loadStoreThread.Join();
     485                loadStoreThread = null;
     486            }
    484487        }
    485488
  • trunk/CrypPlugins/QuadraticSieve/QuadraticSieve.cs

    r1817 r1819  
    7474        private static bool alreadyInUse = false;
    7575        private static Mutex alreadyInUseMutex = new Mutex();
    76         private AutoResetEvent waitForConnection = new AutoResetEvent(false);       
     76        private AutoResetEvent waitForConnection = new AutoResetEvent(false);
    7777
    7878        #endregion
     
    159159            if (checkInUse())
    160160                return;
    161 
     161           
    162162            try
    163163            {
     
    347347        /// </summary>
    348348        public void Stop()
    349         {
    350             this.userStopped = true;
     349        {           
    351350            if (obj != IntPtr.Zero)
    352351            {
     
    355354                stop.Invoke(null, new object[] { obj });
    356355            }
    357 
     356            this.userStopped = true;
    358357        }
    359358
     
    671670        private void putTrivialFactorlist(IntPtr list, IntPtr obj)
    672671        {
     672            if (userStopped)
     673                return;
     674
    673675            //add the trivial factors to the factor list:
    674676            factorManager.AddFactors(list);
     
    795797        private void stopThreads()
    796798        {
     799            if (settings.UsePeer2Peer)
     800                peerToPeer.StopLoadStoreThread();
     801
    797802            if (conf_list != null)
    798803            {
    799                 running = false;               
    800 
    801804                MethodInfo stop = msieve.GetMethod("stop");
    802805                MethodInfo getObjFromConf = msieve.GetMethod("getObjFromConf");
     
    806809                    if (conf != null)
    807810                        stop.Invoke(null, new object[] { getObjFromConf.Invoke(null, new object[] { (IntPtr)conf }) });
     811               
     812                running = false;
    808813
    809814                conf_list = null;
    810815                conf_listMutex.ReleaseMutex();
    811 
    812                 if (settings.UsePeer2Peer)
    813                     peerToPeer.StopLoadStoreThread();
    814816
    815817                GuiLogMessage("Waiting for threads to stop!", NotificationLevel.Debug);
  • trunk/CrypPlugins/QuadraticSieve/msieve/common/driver.c

    r1817 r1819  
    242242        //}
    243243
    244 clean_up:
     244clean_up:       
    245245        factor_list_free(&n, &factor_list, obj);
    246246        if (!(obj->flags & MSIEVE_FLAG_STOP_SIEVING))
  • trunk/CrypPlugins/QuadraticSieve/msieve/demo.c

    r633 r1819  
    178178                printf("\ncurrent factorization was interrupted\n");
    179179                //exit(0);
     180                if (g_curr_factorization)
     181                        msieve_obj_free(g_curr_factorization);
    180182                return 0;
    181183        }
     
    215217        *seed2 = g_curr_factorization->seed2;
    216218
     219        /*factor = g_curr_factorization->factors;
     220        g_curr_factorization->factors = NULL;*/
     221
    217222        /* free the current factorization struct. The following
    218223           avoids a race condition in the signal handler */
    219224
    220         /* No, we don't ;)  */
    221 
    222         /*obj = g_curr_factorization;
     225        obj = g_curr_factorization;
    223226        g_curr_factorization = NULL;
     227
    224228        if (obj)
    225                 msieve_obj_free(obj);*/
    226 
    227         return g_curr_factorization->factors;
     229                msieve_obj_free(obj);
     230
     231        return 0;
    228232}
    229233
Note: See TracChangeset for help on using the changeset viewer.