Changeset 0afabbd


Ignore:
Timestamp:
Oct 31, 2010 2:36:56 PM (9 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
07aa0798
Parents:
2ea3f9b
Message:

Add synch to fix race causing AIOOBE
http://forum.i2p/viewtopic.php?t=5061

File:
1 edited

Legend:

Unmodified
Added
Removed
  • router/java/src/net/i2p/router/client/ClientConnectionRunner.java

    r2ea3f9b r0afabbd  
    362362        //  so the comparison will always work.
    363363        int leases = set.getLeaseCount();
    364         if (_currentLeaseSet != null && _currentLeaseSet.getLeaseCount() == leases) {
    365             for (int i = 0; i < leases; i++) {
    366                 if (! _currentLeaseSet.getLease(i).getTunnelId().equals(set.getLease(i).getTunnelId()))
    367                     break;
    368                 if (! _currentLeaseSet.getLease(i).getGateway().equals(set.getLease(i).getGateway()))
    369                     break;
    370                 if (i == leases - 1) {
    371                     if (_log.shouldLog(Log.INFO))
    372                         _log.info("Requested leaseSet hasn't changed");
    373                     if (onCreateJob != null)
    374                         _context.jobQueue().addJob(onCreateJob);
    375                     return; // no change
     364        // synch so _currentLeaseSet isn't changed out from under us
     365        synchronized (this) {
     366            if (_currentLeaseSet != null && _currentLeaseSet.getLeaseCount() == leases) {
     367                for (int i = 0; i < leases; i++) {
     368                    if (! _currentLeaseSet.getLease(i).getTunnelId().equals(set.getLease(i).getTunnelId()))
     369                        break;
     370                    if (! _currentLeaseSet.getLease(i).getGateway().equals(set.getLease(i).getGateway()))
     371                        break;
     372                    if (i == leases - 1) {
     373                        if (_log.shouldLog(Log.INFO))
     374                            _log.info("Requested leaseSet hasn't changed");
     375                        if (onCreateJob != null)
     376                            _context.jobQueue().addJob(onCreateJob);
     377                        return; // no change
     378                    }
    376379                }
    377380            }
Note: See TracChangeset for help on using the changeset viewer.