Changeset 3f8df84


Ignore:
Timestamp:
Jul 18, 2011 2:29:32 PM (9 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
6d6799b9
Parents:
127aebe
Message:
  • Streaming: Improve conn limit log message
File:
1 edited

Legend:

Unmodified
Added
Removed
  • apps/streaming/java/src/net/i2p/client/streaming/ConnectionManager.java

    r127aebe r3f8df84  
    161161                              + _maxConcurrentStreams + " connections");
    162162                reject = true;
    163             } else if (shouldRejectConnection(synPacket)) {
     163            } else {
    164164                // this may not be right if more than one is enabled
    165                 String why;
    166                 if (_defaultOptions.isAccessListEnabled())
    167                     why = "not whitelisted: ";
    168                 else if (_defaultOptions.isBlacklistEnabled())
    169                     why = "blacklisted: ";
    170                 else
    171                     why = "throttled: ";
    172                 _log.error("Refusing connection since peer is " + why +
    173                            (synPacket.getOptionalFrom() == null ? "null from" : synPacket.getOptionalFrom().calculateHash().toBase64()));
    174                 reject = true;
    175             } else {
    176                 while (true) {
    177                     Connection oldCon = _connectionByInboundId.putIfAbsent(Long.valueOf(receiveId), con);
    178                     if (oldCon == null) {
    179                         break;
    180                     } else {
    181                         // receiveId already taken, try another
    182                         receiveId = _context.random().nextLong(Packet.MAX_STREAM_ID-1)+1;
     165                String why = shouldRejectConnection(synPacket);
     166                if (why != null) {
     167                    _log.logAlways(Log.WARN, "Refusing connection since peer is " + why +
     168                           (synPacket.getOptionalFrom() == null ? "" : ": " + synPacket.getOptionalFrom().calculateHash().toBase64()));
     169                    reject = true;
     170                } else {
     171                    while (true) {
     172                        Connection oldCon = _connectionByInboundId.putIfAbsent(Long.valueOf(receiveId), con);
     173                        if (oldCon == null) {
     174                            break;
     175                        } else {
     176                            // receiveId already taken, try another
     177                            receiveId = _context.random().nextLong(Packet.MAX_STREAM_ID-1)+1;
     178                        }
    183179                    }
    184180                }
     
    304300    }
    305301   
    306     private boolean shouldRejectConnection(Packet syn) {
     302    /**
     303     *  @return reason string or null if not rejected
     304     */
     305    private String shouldRejectConnection(Packet syn) {
    307306        // unfortunately we don't have access to the router client manager here,
    308307        // so we can't whitelist local access
    309308        Destination from = syn.getOptionalFrom();
    310309        if (from == null)
    311             return true;
     310            return "null";
    312311        Hash h = from.calculateHash();
    313         boolean throttled = false;
     312        String throttled = null;
    314313        // always call all 3 to increment all counters
    315314        if (_minuteThrottler != null && _minuteThrottler.shouldThrottle(h)) {
    316315            _context.statManager().addRateData("stream.con.throttledMinute", 1, 0);
    317             throttled = true;
     316            throttled = "throttled by per-peer limit of " + _defaultOptions.getMaxConnsPerMinute() +
     317                        " or total limit of " + _defaultOptions.getMaxTotalConnsPerMinute() +
     318                        " per minute";
    318319        }
    319320        if (_hourThrottler != null && _hourThrottler.shouldThrottle(h)) {
    320321            _context.statManager().addRateData("stream.con.throttledHour", 1, 0);
    321             throttled = true;
     322            throttled = "throttled by per-peer limit of " + _defaultOptions.getMaxConnsPerHour() +
     323                        " or total limit of " + _defaultOptions.getMaxTotalConnsPerHour() +
     324                        " per hour";
    322325        }
    323326        if (_dayThrottler != null && _dayThrottler.shouldThrottle(h)) {
    324327            _context.statManager().addRateData("stream.con.throttledDay", 1, 0);
    325             throttled = true;
    326         }
    327         if (throttled)
    328             return true;
     328            throttled = "throttled by per-peer limit of " + _defaultOptions.getMaxConnsPerDay() +
     329                        " or total limit of " + _defaultOptions.getMaxTotalConnsPerDay() +
     330                        " per day";
     331        }
     332        if (throttled != null)
     333            return throttled;
    329334        // if the sig is absent or bad it will be caught later (in CPH)
    330         if (_defaultOptions.isAccessListEnabled())
    331             return !_defaultOptions.getAccessList().contains(h);
    332         if (_defaultOptions.isBlacklistEnabled())
    333             return _defaultOptions.getBlacklist().contains(h);
    334         return false;
     335        if (_defaultOptions.isAccessListEnabled() &&
     336            !_defaultOptions.getAccessList().contains(h))
     337            return "not whitelisted";
     338        if (_defaultOptions.isBlacklistEnabled() &&
     339            _defaultOptions.getBlacklist().contains(h))
     340            return "blacklisted";
     341        return null;
    335342    }
    336343
Note: See TracChangeset for help on using the changeset viewer.