| Index: third_party/upload.py | 
| diff --git a/third_party/upload.py b/third_party/upload.py | 
| index c9a45b59063b401c31d07a3f42923be2fcb0db9c..1101f26b069b8972459ba3e40cfc93149955c55c 100755 | 
| --- a/third_party/upload.py | 
| +++ b/third_party/upload.py | 
| @@ -372,32 +372,33 @@ class AbstractRpcServer(object): | 
| authentication cookie, it returns a 401 response (or a 302) and | 
| directs us to authenticate ourselves with ClientLogin. | 
| """ | 
| -    INTERNAL_ERROR_MAP = { | 
| -        "badauth": "BadAuthentication", | 
| -        "cr": "CaptchaRequired", | 
| -        "adel": "AccountDeleted", | 
| -        "adis": "AccountDisabled", | 
| -        "sdis": "ServiceDisabled", | 
| -        "ire": "ServiceUnavailable", | 
| -    } | 
| - | 
| for i in range(3): | 
| credentials = self.auth_function() | 
|  | 
| # Try external, then internal. | 
| e = None | 
| +      error_map = None | 
| try: | 
| auth_token = self._GetAuthToken(credentials[0], credentials[1]) | 
| except urllib2.HTTPError: | 
| try: | 
| +          # Try internal endpoint. | 
| +          error_map = { | 
| +              "badauth": "BadAuthentication", | 
| +              "cr": "CaptchaRequired", | 
| +              "adel": "AccountDeleted", | 
| +              "adis": "AccountDisabled", | 
| +              "sdis": "ServiceDisabled", | 
| +              "ire": "ServiceUnavailable", | 
| +          } | 
| auth_token = self._GetAuthToken(credentials[0], credentials[1], | 
| internal=True) | 
| except ClientLoginError, exc: | 
| e = exc | 
| if e: | 
| print >> sys.stderr, '' | 
| -        if internal: | 
| -          e.reason = INTERNAL_ERROR_MAP.get(e.reason, e.reason) | 
| +        if error_map: | 
| +          e.reason = error_map.get(e.reason, e.reason) | 
| if e.reason == "BadAuthentication": | 
| if e.info == "InvalidSecondFactor": | 
| print >> sys.stderr, ( | 
|  |