diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java
index e7e25260b7ea3ef8c65ab19a203d8526f0d5d722..c99494b245aa4a91e3638154b1cedb47b31edabe 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java
@@ -127,7 +127,7 @@ public class I2PSnarkServlet extends HttpServlet {
                 }
             } else if ( (newURL != null) && (newURL.trim().length() > "http://.i2p/".length()) ) {
                 _manager.addMessage("Fetching " + newURL);
-                I2PThread fetch = new I2PThread(new FetchAndAdd(newURL), "Fetch and add");
+                I2PThread fetch = new I2PThread(new FetchAndAdd(_manager, newURL), "Fetch and add");
                 fetch.start();
             } else {
                 // no file or URL specified
@@ -267,56 +267,6 @@ public class I2PSnarkServlet extends HttpServlet {
         }
     }
     
-    private class FetchAndAdd implements Runnable {
-        private String _url;
-        public FetchAndAdd(String url) {
-            _url = url;
-        }
-        public void run() {
-            _url = _url.trim();
-            File file = I2PSnarkUtil.instance().get(_url, false);
-            try {
-                if ( (file != null) && (file.exists()) && (file.length() > 0) ) {
-                    _manager.addMessage("Torrent fetched from " + _url);
-                    FileInputStream in = null;
-                    try {
-                        in = new FileInputStream(file);
-                        MetaInfo info = new MetaInfo(in);
-                        String name = info.getName();
-                        name = name.replace('/', '_');
-                        name = name.replace('\\', '_');
-                        name = name.replace('&', '+');
-                        name = name.replace('\'', '_');
-                        name = name.replace('"', '_');
-                        name = name.replace('`', '_');
-                        name = name + ".torrent";
-                        File torrentFile = new File(_manager.getDataDir(), name);
-                        
-                        String canonical = torrentFile.getCanonicalPath();
-                        
-                        if (torrentFile.exists()) {
-                            if (_manager.getTorrent(canonical) != null)
-                                _manager.addMessage("Torrent already running: " + name);
-                            else
-                                _manager.addMessage("Torrent already in the queue: " + name);
-                        } else {
-                            FileUtil.copy(file.getAbsolutePath(), canonical, true);
-                            _manager.addTorrent(canonical);
-                        }
-                    } catch (IOException ioe) {
-                        _manager.addMessage("Torrent at " + _url + " was not valid: " + ioe.getMessage());
-                    } finally {
-                        try { in.close(); } catch (IOException ioe) {}
-                    }
-                } else {
-                    _manager.addMessage("Torrent was not retrieved from " + _url);
-                }
-            } finally {
-                if (file != null) file.delete();
-            }
-        }
-    }
-    
     private List getSortedSnarks(HttpServletRequest req) {
         Set files = _manager.listTorrentFiles();
         TreeSet fileNames = new TreeSet(files); // sorts it alphabetically
@@ -635,4 +585,57 @@ public class I2PSnarkServlet extends HttpServlet {
     private static final String TABLE_FOOTER = "</table>\n";
     
     private static final String FOOTER = "</body></html>";
-}
\ No newline at end of file
+}
+
+
+class FetchAndAdd implements Runnable {
+    private SnarkManager _manager;
+    private String _url;
+    public FetchAndAdd(SnarkManager mgr, String url) {
+        _manager = mgr;
+        _url = url;
+    }
+    public void run() {
+        _url = _url.trim();
+        File file = I2PSnarkUtil.instance().get(_url, false);
+        try {
+            if ( (file != null) && (file.exists()) && (file.length() > 0) ) {
+                _manager.addMessage("Torrent fetched from " + _url);
+                FileInputStream in = null;
+                try {
+                    in = new FileInputStream(file);
+                    MetaInfo info = new MetaInfo(in);
+                    String name = info.getName();
+                    name = name.replace('/', '_');
+                    name = name.replace('\\', '_');
+                    name = name.replace('&', '+');
+                    name = name.replace('\'', '_');
+                    name = name.replace('"', '_');
+                    name = name.replace('`', '_');
+                    name = name + ".torrent";
+                    File torrentFile = new File(_manager.getDataDir(), name);
+
+                    String canonical = torrentFile.getCanonicalPath();
+
+                    if (torrentFile.exists()) {
+                        if (_manager.getTorrent(canonical) != null)
+                            _manager.addMessage("Torrent already running: " + name);
+                        else
+                            _manager.addMessage("Torrent already in the queue: " + name);
+                    } else {
+                        FileUtil.copy(file.getAbsolutePath(), canonical, true);
+                        _manager.addTorrent(canonical);
+                    }
+                } catch (IOException ioe) {
+                    _manager.addMessage("Torrent at " + _url + " was not valid: " + ioe.getMessage());
+                } finally {
+                    try { in.close(); } catch (IOException ioe) {}
+                }
+            } else {
+                _manager.addMessage("Torrent was not retrieved from " + _url);
+            }
+        } finally {
+            if (file != null) file.delete();
+        }
+    }
+}
diff --git a/core/java/src/net/i2p/CoreVersion.java b/core/java/src/net/i2p/CoreVersion.java
index 7b68e5b30e3f3198063a81f2ecb0e2349a659323..6d439f3963061e20023ca0446dfec053f77de026 100644
--- a/core/java/src/net/i2p/CoreVersion.java
+++ b/core/java/src/net/i2p/CoreVersion.java
@@ -14,8 +14,8 @@ package net.i2p;
  *
  */
 public class CoreVersion {
-    public final static String ID = "$Revision: 1.53 $ $Date: 2006/02/16 15:44:09 $";
-    public final static String VERSION = "0.6.1.11";
+    public final static String ID = "$Revision: 1.54 $ $Date: 2006/02/21 10:20:17 $";
+    public final static String VERSION = "0.6.1.12";
 
     public static void main(String args[]) {
         System.out.println("I2P Core version: " + VERSION);
diff --git a/history.txt b/history.txt
index da3d25d89b43105cd98223c87b9058a8e4181664..ca31d712b9037a085357fd143b0efa2522e4ae9d 100644
--- a/history.txt
+++ b/history.txt
@@ -1,4 +1,11 @@
-$Id: history.txt,v 1.420 2006/02/25 15:41:52 jrandom Exp $
+$Id: history.txt,v 1.421 2006/02/26 16:30:58 jrandom Exp $
+
+* 2006-02-27  0.6.1.12 released
+
+2006-02-27  jrandom
+    * Adjust the jbigi.jar to use the athlon-optimized jbigi on windows/amd64
+      machines, rather than the generic jbigi (until we have an athlon64
+      optimized version)
 
 2006-02-26  jrandom
     * Switch from the bouncycastle to the gnu-crypto implementation for
diff --git a/initialNews.xml b/initialNews.xml
index b29b64fb234c51c1b9069eea9e6e70a2e59d85c7..a1b90b812ad6c93aedecf8a666b0ce7c4f9717f9 100644
--- a/initialNews.xml
+++ b/initialNews.xml
@@ -1,5 +1,5 @@
-<i2p.news date="$Date: 2006/02/16 15:44:07 $">
- <i2p.release version="0.6.1.11" date="2006/02/21" minVersion="0.6"
+<i2p.news date="$Date: 2006/02/21 10:20:21 $">
+ <i2p.release version="0.6.1.12" date="2006/02/27" minVersion="0.6"
               anonurl="http://i2p/NF2RLVUxVulR3IqK0sGJR0dHQcGXAzwa6rEO4WAWYXOHw-DoZhKnlbf1nzHXwMEJoex5nFTyiNMqxJMWlY54cvU~UenZdkyQQeUSBZXyuSweflUXFqKN-y8xIoK2w9Ylq1k8IcrAFDsITyOzjUKoOPfVq34rKNDo7fYyis4kT5bAHy~2N1EVMs34pi2RFabATIOBk38Qhab57Umpa6yEoE~rbyR~suDRvD7gjBvBiIKFqhFueXsR2uSrPB-yzwAGofTXuklofK3DdKspciclTVzqbDjsk5UXfu2nTrC1agkhLyqlOfjhyqC~t1IXm-Vs2o7911k7KKLGjB4lmH508YJ7G9fLAUyjuB-wwwhejoWqvg7oWvqo4oIok8LG6ECR71C3dzCvIjY2QcrhoaazA9G4zcGMm6NKND-H4XY6tUWhpB~5GefB3YczOqMbHq4wi0O9MzBFrOJEOs3X4hwboKWANf7DT5PZKJZ5KorQPsYRSq0E3wSOsFCSsdVCKUGsAAAA/i2p/i2pupdate.sud"
               publicurl="http://dev.i2p.net/i2p/i2pupdate.sud"
               anonannouncement="http://i2p/NF2RLVUxVulR3IqK0sGJR0dHQcGXAzwa6rEO4WAWYXOHw-DoZhKnlbf1nzHXwMEJoex5nFTyiNMqxJMWlY54cvU~UenZdkyQQeUSBZXyuSweflUXFqKN-y8xIoK2w9Ylq1k8IcrAFDsITyOzjUKoOPfVq34rKNDo7fYyis4kT5bAHy~2N1EVMs34pi2RFabATIOBk38Qhab57Umpa6yEoE~rbyR~suDRvD7gjBvBiIKFqhFueXsR2uSrPB-yzwAGofTXuklofK3DdKspciclTVzqbDjsk5UXfu2nTrC1agkhLyqlOfjhyqC~t1IXm-Vs2o7911k7KKLGjB4lmH508YJ7G9fLAUyjuB-wwwhejoWqvg7oWvqo4oIok8LG6ECR71C3dzCvIjY2QcrhoaazA9G4zcGMm6NKND-H4XY6tUWhpB~5GefB3YczOqMbHq4wi0O9MzBFrOJEOs3X4hwboKWANf7DT5PZKJZ5KorQPsYRSq0E3wSOsFCSsdVCKUGsAAAA/pipermail/i2p/2005-September/000878.html" 
diff --git a/installer/lib/jbigi/README.txt b/installer/lib/jbigi/README.txt
index 9a25b08adbe93f6dfd71c4f1c4e79fde79c2336f..0f8649815ed5fa5380ebf92d3f351fbfe5ec0081 100644
--- a/installer/lib/jbigi/README.txt
+++ b/installer/lib/jbigi/README.txt
@@ -19,3 +19,7 @@ the libg++.so.5 dependency that has been a problem for a few linux distros.
 
 On Feb 8, 2006, the libjbigi-linux-viac3.so was added to jbigi.jar after
 being compiled by jrandom on linux/p4 (cross compiled to --host=viac3)
+
+On Feb 27, 2006, jbigi-win-athlon.dll was copied to jbigi-win-athlon64.dll,
+as it should offer amd64 users better performance than jbigi-win-none.dll
+until we get a full amd64 build.
diff --git a/installer/lib/jbigi/jbigi.jar b/installer/lib/jbigi/jbigi.jar
index 1926c96693746701c1accc4b22a0dd721a93dc88..518ea48b5d483b29eb002d5e702ac2b13b8888e3 100644
Binary files a/installer/lib/jbigi/jbigi.jar and b/installer/lib/jbigi/jbigi.jar differ
diff --git a/installer/lib/jbigi/jbigi.jar.sig b/installer/lib/jbigi/jbigi.jar.sig
index 2eeb21015337514ad03a9b6cebbf5ba0eeba76ee..5ecb780a90ec3735676ea09bbb14ae9942e44ad3 100644
Binary files a/installer/lib/jbigi/jbigi.jar.sig and b/installer/lib/jbigi/jbigi.jar.sig differ
diff --git a/news.xml b/news.xml
index b002fb04a20b60d8d84b00205b1ee79b809c1084..8722eab1bdc0d02e564741e3496fdcff24feb4f1 100644
--- a/news.xml
+++ b/news.xml
@@ -1,5 +1,5 @@
-<i2p.news date="$Date: 2006/02/21 15:12:14 $">
- <i2p.release version="0.6.1.11" date="2006/02/21" minVersion="0.6"
+<i2p.news date="$Date: 2006/02/21 22:34:02 $">
+ <i2p.release version="0.6.1.12" date="2006/02/27" minVersion="0.6"
               anonurl="http://i2p/NF2RLVUxVulR3IqK0sGJR0dHQcGXAzwa6rEO4WAWYXOHw-DoZhKnlbf1nzHXwMEJoex5nFTyiNMqxJMWlY54cvU~UenZdkyQQeUSBZXyuSweflUXFqKN-y8xIoK2w9Ylq1k8IcrAFDsITyOzjUKoOPfVq34rKNDo7fYyis4kT5bAHy~2N1EVMs34pi2RFabATIOBk38Qhab57Umpa6yEoE~rbyR~suDRvD7gjBvBiIKFqhFueXsR2uSrPB-yzwAGofTXuklofK3DdKspciclTVzqbDjsk5UXfu2nTrC1agkhLyqlOfjhyqC~t1IXm-Vs2o7911k7KKLGjB4lmH508YJ7G9fLAUyjuB-wwwhejoWqvg7oWvqo4oIok8LG6ECR71C3dzCvIjY2QcrhoaazA9G4zcGMm6NKND-H4XY6tUWhpB~5GefB3YczOqMbHq4wi0O9MzBFrOJEOs3X4hwboKWANf7DT5PZKJZ5KorQPsYRSq0E3wSOsFCSsdVCKUGsAAAA/i2p/i2pupdate.sud"
               publicurl="http://dev.i2p.net/i2p/i2pupdate.sud"
               anonannouncement="http://i2p/NF2RLVUxVulR3IqK0sGJR0dHQcGXAzwa6rEO4WAWYXOHw-DoZhKnlbf1nzHXwMEJoex5nFTyiNMqxJMWlY54cvU~UenZdkyQQeUSBZXyuSweflUXFqKN-y8xIoK2w9Ylq1k8IcrAFDsITyOzjUKoOPfVq34rKNDo7fYyis4kT5bAHy~2N1EVMs34pi2RFabATIOBk38Qhab57Umpa6yEoE~rbyR~suDRvD7gjBvBiIKFqhFueXsR2uSrPB-yzwAGofTXuklofK3DdKspciclTVzqbDjsk5UXfu2nTrC1agkhLyqlOfjhyqC~t1IXm-Vs2o7911k7KKLGjB4lmH508YJ7G9fLAUyjuB-wwwhejoWqvg7oWvqo4oIok8LG6ECR71C3dzCvIjY2QcrhoaazA9G4zcGMm6NKND-H4XY6tUWhpB~5GefB3YczOqMbHq4wi0O9MzBFrOJEOs3X4hwboKWANf7DT5PZKJZ5KorQPsYRSq0E3wSOsFCSsdVCKUGsAAAA/pipermail/i2p/2005-September/000878.html" 
@@ -10,16 +10,9 @@
             anonlogs="http://i2p/Nf3ab-ZFkmI-LyMt7GjgT-jfvZ3zKDl0L96pmGQXF1B82W2Bfjf0n7~288vafocjFLnQnVcmZd~-p0-Oolfo9aW2Rm-AhyqxnxyLlPBqGxsJBXjPhm1JBT4Ia8FB-VXt0BuY0fMKdAfWwN61-tj4zIcQWRxv3DFquwEf035K~Ra4SWOqiuJgTRJu7~o~DzHVljVgWIzwf8Z84cz0X33pv-mdG~~y0Bsc2qJVnYwjjR178YMcRSmNE0FVMcs6f17c6zqhMw-11qjKpY~EJfHYCx4lBWF37CD0obbWqTNUIbL~78vxqZRT3dgAgnLixog9nqTO-0Rh~NpVUZnoUi7fNR~awW5U3Cf7rU7nNEKKobLue78hjvRcWn7upHUF45QqTDuaM3yZa7OsjbcH-I909DOub2Q0Dno6vIwuA7yrysccN1sbnkwZbKlf4T6~iDdhaSLJd97QCyPOlbyUfYy9QLNExlRqKgNVJcMJRrIual~Lb1CLbnzt0uvobM57UpqSAAAA/meeting141"
             publiclogs="http://www.i2p.net/meeting141" />
 &#149;
-2006-02-21:
-<a href="http://dev.i2p/pipermail/i2p/2006-February/001263.html">0.6.1.11 released</a>
-with some critical SSU fixes - please upgrade as soon as possible.
-<br>
-&#149;
-2006-02-21:
-0.6.1.9 and earlier users: Many network servers
-(squid.i2p, dev.i2p, cvs.i2p, www.i2p, syndiemedia.i2p and others)
-will be disconnected from the "old" network shortly.
-Please upgrade to 0.6.1.11 as soon as possible.
+2006-02-27:
+<a href="http://dev.i2p/pipermail/i2p/2006-February/001265.html">0.6.1.12 released</a>
+with some useful SSU and peer selection fixes - please upgrade as soon as possible.
 <br>
 &#149;
 2006-02-21:
diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java
index fb3d758a0c8e59cfe67d97759815b0ca4bd00485..05b30a50f1cee81de4afd48cd8e5b431031c9a4c 100644
--- a/router/java/src/net/i2p/router/RouterVersion.java
+++ b/router/java/src/net/i2p/router/RouterVersion.java
@@ -15,9 +15,9 @@ import net.i2p.CoreVersion;
  *
  */
 public class RouterVersion {
-    public final static String ID = "$Revision: 1.361 $ $Date: 2006/02/25 15:41:52 $";
-    public final static String VERSION = "0.6.1.11";
-    public final static long BUILD = 6;
+    public final static String ID = "$Revision: 1.362 $ $Date: 2006/02/26 16:30:57 $";
+    public final static String VERSION = "0.6.1.12";
+    public final static long BUILD = 0;
     public static void main(String args[]) {
         System.out.println("I2P Router version: " + VERSION + "-" + BUILD);
         System.out.println("Router ID: " + RouterVersion.ID);