From 8c2636aa99fc31be0a8a3e3eade84e507e060ff0 Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Mon, 20 Apr 2015 15:33:03 +0000
Subject: [PATCH] Reseed: Honor SSL/non-SSL setting when custom reseed list is
 set (ticket #1136) patch from "Inondle", cleaned up and tested

---
 .../i2p/router/networkdb/reseed/Reseeder.java | 68 ++++++++++++++-----
 1 file changed, 50 insertions(+), 18 deletions(-)

diff --git a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java
index 1782c7d060..79a1d942a9 100644
--- a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java
+++ b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java
@@ -404,36 +404,68 @@ public class Reseeder {
             boolean defaulted = URLs == null;
             boolean SSLDisable = _context.getBooleanProperty(PROP_SSL_DISABLE);
             boolean SSLRequired = _context.getBooleanPropertyDefaultTrue(PROP_SSL_REQUIRED);
+
             if (defaulted) {
                 if (SSLDisable)
                     URLs = DEFAULT_SEED_URL;
                 else
                     URLs = DEFAULT_SSL_SEED_URL;
-            }
-            StringTokenizer tok = new StringTokenizer(URLs, " ,");
-            while (tok.hasMoreTokens()) {
-                String u = tok.nextToken().trim();
-                if (!u.endsWith("/"))
-                    u = u + '/';
-                try {
-                    URLList.add(new URL(u));
-                } catch (MalformedURLException mue) {}
-            }
-            Collections.shuffle(URLList, _context.random());
-            if (defaulted && !SSLDisable && !SSLRequired) {
-                // put the non-SSL at the end of the SSL
-                List<URL> URLList2 = new ArrayList<URL>();
-                tok = new StringTokenizer(DEFAULT_SEED_URL, " ,");
+                StringTokenizer tok = new StringTokenizer(URLs, " ,");
                 while (tok.hasMoreTokens()) {
                     String u = tok.nextToken().trim();
                     if (!u.endsWith("/"))
                         u = u + '/';
                     try {
-                        URLList2.add(new URL(u));
+                        URLList.add(new URL(u));
                     } catch (MalformedURLException mue) {}
                 }
-                Collections.shuffle(URLList2, _context.random());
-                URLList.addAll(URLList2);
+                Collections.shuffle(URLList, _context.random());
+                if (!SSLDisable && !SSLRequired) {
+                    // put the non-SSL at the end of the SSL
+                    List<URL> URLList2 = new ArrayList<URL>();
+                    tok = new StringTokenizer(DEFAULT_SEED_URL, " ,");
+                    while (tok.hasMoreTokens()) {
+                        String u = tok.nextToken().trim();
+                        if (!u.endsWith("/"))
+                            u = u + '/';
+                        try {
+                            URLList2.add(new URL(u));
+                        } catch (MalformedURLException mue) {}
+                    }
+                    Collections.shuffle(URLList2, _context.random());
+                    URLList.addAll(URLList2);
+                }
+            } else {
+                // custom list given
+                List<URL> SSLList = new ArrayList<URL>();
+                List<URL> nonSSLList = new ArrayList<URL>();
+                StringTokenizer tok = new StringTokenizer(URLs, " ,");
+                while (tok.hasMoreTokens()) {
+                    // format tokens
+                    String u = tok.nextToken().trim();
+                    if (!u.endsWith("/"))
+                        u = u + '/';
+                    // check if ssl or not then add to respective list
+                    if (u.startsWith("https")) {
+                        try {
+                            SSLList.add(new URL(u));
+                        } catch (MalformedURLException mue) {}
+                    } else {
+                        try {
+                            nonSSLList.add(new URL(u));
+                        } catch (MalformedURLException mue) {}
+                    }
+                }
+                // shuffle lists
+                // depending on preferences, add lists to URLList
+                if (!SSLDisable) {
+                    Collections.shuffle(SSLList,_context.random());
+                    URLList.addAll(SSLList);
+                }
+                if (SSLDisable || !SSLRequired) {
+                    Collections.shuffle(nonSSLList, _context.random());
+                    URLList.addAll(nonSSLList);
+                }
             }
             return reseed(URLList, echoStatus);
         }
-- 
GitLab