Changeset 2499aad for apps/ministreaming


Ignore:
Timestamp:
Jun 19, 2015 2:55:49 PM (5 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
586defc
Parents:
addb142
Message:

I2PSocketEepGet: Do hostname lookups in-session for efficiency

File:
1 edited

Legend:

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

    raddb142 r2499aad  
    1212import net.i2p.I2PAppContext;
    1313import net.i2p.I2PException;
     14import net.i2p.client.I2PSession;
     15import net.i2p.client.I2PSessionException;
     16import net.i2p.data.Base32;
    1417import net.i2p.data.DataHelper;
    1518import net.i2p.data.Destination;
     19import net.i2p.data.Hash;
    1620import net.i2p.util.EepGet;
    1721import net.i2p.util.SocketTimeout;
     
    130134                }
    131135
    132                 Destination dest = _context.namingService().lookup(host);
     136                // Use existing I2PSession for lookups.
     137                // This is much more efficient than using the naming service
     138                Destination dest;
     139                I2PSession sess = _socketManager.getSession();
     140                if (sess != null && !sess.isClosed()) {
     141                    try {
     142                        if (host.length() == 60 && host.endsWith(".b32.i2p")) {
     143                            byte[] b = Base32.decode(host.substring(0, 52));
     144                            if (b != null) {
     145                                Hash h = Hash.create(b);
     146                                dest = sess.lookupDest(h, 20*1000);
     147                            } else {
     148                                dest = null;
     149                            }
     150                        } else {
     151                            dest = sess.lookupDest(host, 20*1000);
     152                        }
     153                    } catch (I2PSessionException ise) {
     154                        dest = null;
     155                    }
     156                } else {
     157                    dest = _context.namingService().lookup(host);
     158                }
    133159                if (dest == null)
    134                     throw new UnknownHostException("Unknown or non-i2p host");
     160                    throw new UnknownHostException("Unknown or non-i2p host: " + host);
    135161
    136162                // Set the timeouts, using the other existing options in the socket manager
Note: See TracChangeset for help on using the changeset viewer.