Issue1177
r58207 and r58247 patch logic is reversed.  I noticed this when I
tried to use urllib to retrieve a file which required auth.

Fix that and add a test for 401 error to verify.
diff --git a/Lib/urllib.py b/Lib/urllib.py
index ad0e72b..c6751b8 100644
--- a/Lib/urllib.py
+++ b/Lib/urllib.py
@@ -342,7 +342,7 @@
                             'got a bad status line', None)
         # According to RFC 2616, "2xx" code indicates that the client's
         # request was successfully received, understood, and accepted.
-        if not (200 <= errcode < 300):
+        if (200 <= errcode < 300):
             return addinfourl(fp, headers, "http:" + url)
         else:
             if data is None:
@@ -437,7 +437,7 @@
                                 'got a bad status line', None)
             # According to RFC 2616, "2xx" code indicates that the client's
             # request was successfully received, understood, and accepted.
-            if not (200 <= errcode < 300):
+            if (200 <= errcode < 300):
                 return addinfourl(fp, headers, "https:" + url)
             else:
                 if data is None: