Changeset 98277d3b


Ignore:
Timestamp:
Dec 21, 2005 12:04:54 PM (15 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
148dd99c
Parents:
702e5a5e
git-author:
jrandom <jrandom> (12/21/05 12:04:54)
git-committer:
zzz <zzz@…> (12/21/05 12:04:54)
Message:

2005-12-21 jrandom

  • Adjusted I2PSnark's usage of the streaming lib (tweaking it for BT's behavior)
  • Fixed the I2PSnark bug that would lose track of live peers
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java

    r702e5a5e r98277d3b  
    9191            if (opts.getProperty("inbound.nickname") == null)
    9292                opts.setProperty("inbound.nickname", "I2PSnark");
     93            if (opts.getProperty("i2p.streaming.inactivityTimeout") == null)
     94                opts.setProperty("i2p.streaming.inactivityTimeout", "90000");
     95            if (opts.getProperty("i2p.streaming.inactivityAction") == null)
     96                opts.setProperty("i2p.streaming.inactivityAction", "1");
    9397            _manager = I2PSocketManagerFactory.createManager(_i2cpHost, _i2cpPort, opts);
    9498        }
  • apps/i2psnark/java/src/org/klomp/snark/Peer.java

    r702e5a5e r98277d3b  
    106106  {
    107107    if (peerID != null)
    108       return peerID.toString() + _id;
     108      return peerID.toString() + ' ' + _id;
    109109    else
    110       return "[unknown id]" + _id;
     110      return "[unknown id] " + _id;
    111111  }
    112112
     
    116116  public int hashCode()
    117117  {
    118     return peerID.hashCode();
     118    return peerID.hashCode() ^ (2 << _id);
    119119  }
    120120
     
    128128      {
    129129        Peer p = (Peer)o;
    130         return peerID.equals(p.peerID);
     130        return _id == p._id && peerID.equals(p.peerID);
    131131      }
    132132    else
     
    140140  {
    141141    Peer p = (Peer)o;
    142     return peerID.compareTo(p.peerID);
     142    int rv = peerID.compareTo(p.peerID);
     143    if (rv == 0) {
     144        if (_id > p._id) return 1;
     145        else if (_id < p._id) return -1;
     146        else return 0;
     147    } else {
     148        return rv;
     149    }
    143150  }
    144151
     
    209216        // The outgoing connection creates its own Thread.
    210217        out.startup();
     218        Thread.currentThread().setName("Snark reader from " + peerID);
    211219        s.in.run();
    212220      }
     
    227235      {
    228236        if (deregister) listener.disconnected(this);
     237        disconnect();
    229238      }
    230239  }
  • apps/i2psnark/java/src/org/klomp/snark/PeerConnectionOut.java

    r702e5a5e r98277d3b  
    5757 
    5858  public void startup() {
    59     thread = new I2PThread(this, "Snark sender " + _id);
     59    thread = new I2PThread(this, "Snark sender " + _id + ": " + peer);
    6060    thread.start();
    6161  }
     
    8383                       
    8484                        // Wait till more data arrives.
    85                         sendQueue.wait();
     85                        sendQueue.wait(60*1000);
    8686                      }
    8787                    catch (InterruptedException ie)
     
    186186        sendQueue.notify();
    187187      }
     188    if (dout != null) {
     189        try {
     190            dout.close();
     191        } catch (IOException ioe) {
     192            _log.warn("Error closing the stream to " + peer, ioe);
     193        }
     194    }
    188195  }
    189196
  • apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java

    r702e5a5e r98277d3b  
    180180
    181181  public void connected(Peer peer)
    182   {
     182  { 
    183183    if (halted)
    184184      {
     
    284284    // other peer that are interested, but are choking us.
    285285    List interested = new LinkedList();
    286     Iterator it = peers.iterator();
    287     while (it.hasNext())
    288       {
    289         Peer peer = (Peer)it.next();
    290         boolean remove = false;
    291         if (uploaders < MAX_UPLOADERS
    292             && peer.isChoking()
    293             && peer.isInterested())
    294           {
    295             if (!peer.isChoked())
    296               interested.add(0, peer);
    297             else
    298               interested.add(peer);
    299           }
    300       }
    301 
    302     while (uploaders < MAX_UPLOADERS && interested.size() > 0)
    303       {
    304         Peer peer = (Peer)interested.remove(0);
    305         if (_log.shouldLog(Log.DEBUG))
    306           _log.debug("Unchoke: " + peer);
    307         peer.setChoking(false);
    308         uploaders++;
    309         // Put peer back at the end of the list.
    310         peers.remove(peer);
    311         peers.add(peer);
    312         peerCount = peers.size();
    313       }
     286    synchronized (peers) {
     287        Iterator it = peers.iterator();
     288        while (it.hasNext())
     289          {
     290            Peer peer = (Peer)it.next();
     291            boolean remove = false;
     292            if (uploaders < MAX_UPLOADERS
     293                && peer.isChoking()
     294                && peer.isInterested())
     295              {
     296                if (!peer.isChoked())
     297                  interested.add(0, peer);
     298                else
     299                  interested.add(peer);
     300              }
     301          }
     302
     303        while (uploaders < MAX_UPLOADERS && interested.size() > 0)
     304          {
     305            Peer peer = (Peer)interested.remove(0);
     306            if (_log.shouldLog(Log.DEBUG))
     307              _log.debug("Unchoke: " + peer);
     308            peer.setChoking(false);
     309            uploaders++;
     310            // Put peer back at the end of the list.
     311            peers.remove(peer);
     312            peers.add(peer);
     313            peerCount = peers.size();
     314          }
     315    }
    314316  }
    315317
  • apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java

    r702e5a5e r98277d3b  
    2929    public static final String PROP_EEP_PORT = "i2psnark.eepPort";
    3030    public static final String PROP_DIR = "i2psnark.dir";
     31
     32    public static final String PROP_AUTO_START = "i2snark.autoStart";
     33    public static final String DEFAULT_AUTO_START = "true";
    3134   
    3235    private SnarkManager() {
     
    6063    }
    6164   
    62     public boolean shouldAutoStart() { return true; }
     65    public boolean shouldAutoStart() {
     66        return Boolean.valueOf(_config.getProperty(PROP_AUTO_START, DEFAULT_AUTO_START+"")).booleanValue();
     67    }
    6368    private int getStartupDelayMinutes() { return 1; }
    6469    public File getDataDir() {
     
    9297        if (!_config.containsKey(PROP_DIR))
    9398            _config.setProperty(PROP_DIR, "i2psnark");
     99        if (!_config.containsKey(PROP_AUTO_START))
     100            _config.setProperty(PROP_AUTO_START, DEFAULT_AUTO_START);
    94101        updateConfig();
    95102    }
     
    227234            }
    228235        }
     236        if (shouldAutoStart() != autoStart) {
     237            _config.setProperty(PROP_AUTO_START, autoStart + "");
     238            addMessage("Adjusted autostart to " + autoStart);
     239            changed = true;
     240        }
    229241        if (changed) {
    230242            saveConfig();
  • apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java

    r702e5a5e r98277d3b  
    470470        int seedPct = 0;
    471471       
    472         out.write("<span class=\"snarkConfig\">\n");
    473472        out.write("<form action=\"" + uri + "\" method=\"POST\">\n");
     473        out.write("<span class=\"snarkConfig\"><hr />\n");
    474474        out.write("<input type=\"hidden\" name=\"nonce\" value=\"" + _nonce + "\" />\n");
    475         out.write("<hr /><span class=\"snarkConfigTitle\">Configuration:</span><br />\n");
     475        out.write("<span class=\"snarkConfigTitle\">Configuration:</span><br />\n");
    476476        out.write("Data directory: <input type=\"text\" size=\"40\" name=\"dataDir\" value=\"" + dataDir + "\" ");
    477477        out.write("title=\"Directory to store torrents and data\" disabled=\"true\" /><br />\n");
    478478        out.write("Auto start: <input type=\"checkbox\" name=\"autoStart\" value=\"true\" "
    479479                  + (autoStart ? "checked " : "")
    480                   + "title=\"If true, automatically start torrents that are added\" disabled=\"true\" />");
     480                  + "title=\"If true, automatically start torrents that are added\" />");
    481481        //Auto add: <input type="checkbox" name="autoAdd" value="true" title="If true, automatically add torrents that are found in the data directory" />
    482482        //Auto stop: <input type="checkbox" name="autoStop" value="true" title="If true, automatically stop torrents that are removed from the data directory" />
     
    497497        out.write("</select><br />\n");
    498498       
    499         out.write("<hr />\n");
     499        //out.write("<hr />\n");
    500500        out.write("EepProxy host: <input type=\"text\" name=\"eepHost\" value=\""
    501501                  + I2PSnarkUtil.instance().getEepProxyHost() + "\" size=\"15\" /> ");
    502         out.write("EepProxy port: <input type=\"text\" name=\"eepPort\" value=\""
    503                   + I2PSnarkUtil.instance().getEepProxyPort() + "\" size=\"5\" /> <br />\n");
     502        out.write("port: <input type=\"text\" name=\"eepPort\" value=\""
     503                  + I2PSnarkUtil.instance().getEepProxyPort() + "\" size=\"5\" /><br />\n");
    504504        out.write("I2CP host: <input type=\"text\" name=\"i2cpHost\" value=\""
    505505                  + I2PSnarkUtil.instance().getI2CPHost() + "\" size=\"15\" /> ");
    506         out.write("I2CP port: <input type=\"text\" name=\"i2cpPort\" value=\"" +
     506        out.write("port: <input type=\"text\" name=\"i2cpPort\" value=\"" +
    507507                  + I2PSnarkUtil.instance().getI2CPPort() + "\" size=\"5\" /> <br />\n");
    508508        StringBuffer opts = new StringBuffer(64);
     
    513513            opts.append(key).append('=').append(val).append(' ');
    514514        }
    515         out.write("I2CP options: <input type=\"text\" name=\"i2cpOpts\" size=\"80\" value=\""
     515        out.write("I2CP opts: <input type=\"text\" name=\"i2cpOpts\" size=\"40\" value=\""
    516516                  + opts.toString() + "\" /><br />\n");
    517517        out.write("<input type=\"submit\" value=\"Save configuration\" name=\"action\" />\n");
    518         out.write("</form>\n</span>\n");
     518        out.write("</span>\n");
     519        out.write("</form>\n");
    519520    }
    520521   
     
    589590                                         "}\n" +
    590591                                         ".snarkConfigTitle {\n" +
    591                                          "      font-size: 16pt;\n" +
     592                                         "      font-size: 12pt;\n" +
    592593                                         "                  font-weight: bold;\n" +
     594                                         "}\n" +
     595                                         ".snarkConfig {\n" +
     596                                         "                  font-size: 10pt;\n" +
    593597                                         "}\n" +
    594598                                         "</style>\n" +
  • apps/syndie/java/src/net/i2p/syndie/sml/ThreadedHTMLRenderer.java

    r702e5a5e r98277d3b  
    191191        EntryContainer entry = archive.getEntry(post);
    192192        if (entry == null) return;
     193        ThreadNode node = index.getNode(post);
     194        if (node == null) {
     195            _log.error("Post is not in the index: " + post.toString());
     196            return;
     197        }
    193198        _entry = entry;
    194199   
     
    236241        if ( (author == null) || (author.trim().length() <= 0) )
    237242            author = post.getKeyHash().toBase64().substring(0,6);
    238        
    239         ThreadNode node = index.getNode(post);
    240243       
    241244        out.write(author);
  • history.txt

    r702e5a5e r98277d3b  
    1 $Id: history.txt,v 1.364 2005/12/19 08:34:56 jrandom Exp $
     1$Id: history.txt,v 1.365 2005/12/19 21:01:37 jrandom Exp $
     2
     32005-12-21  jrandom
     4    * Adjusted I2PSnark's usage of the streaming lib (tweaking it for BT's
     5      behavior)
     6    * Fixed the I2PSnark bug that would lose track of live peers
     7
     82005-12-20  jrandom
     9    * Enabled the control in I2PSnark to toggle whether torrents should be
     10      started automatically or not
     11    * Hopefully finished the last hook to close down torrents completely when
     12      they're stopped.
    213
    3142005-12-19  jrandom
  • router/java/src/net/i2p/router/RouterVersion.java

    r702e5a5e r98277d3b  
    1616 */
    1717public class RouterVersion {
    18     public final static String ID = "$Revision: 1.313 $ $Date: 2005/12/19 08:34:55 $";
     18    public final static String ID = "$Revision: 1.314 $ $Date: 2005/12/19 21:01:37 $";
    1919    public final static String VERSION = "0.6.1.7";
    20     public final static long BUILD = 7;
     20    public final static long BUILD = 8;
    2121    public static void main(String args[]) {
    2222        System.out.println("I2P Router version: " + VERSION + "-" + BUILD);
Note: See TracChangeset for help on using the changeset viewer.