From 7732d8970446d673c31e629a2605e36aff98ce59 Mon Sep 17 00:00:00 2001 From: Brian Witt Date: Sun, 29 Jan 2023 22:28:28 -0800 Subject: [PATCH] handle authorization issue in bitComet --- .../daemon/adapters/bitComet/BitCometAdapter.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/transdroid/daemon/adapters/bitComet/BitCometAdapter.java b/app/src/main/java/org/transdroid/daemon/adapters/bitComet/BitCometAdapter.java index f02619bf..36325fbd 100644 --- a/app/src/main/java/org/transdroid/daemon/adapters/bitComet/BitCometAdapter.java +++ b/app/src/main/java/org/transdroid/daemon/adapters/bitComet/BitCometAdapter.java @@ -136,6 +136,8 @@ public class BitCometAdapter implements IDaemonAdapter { return new RetrieveTaskSuccessResult((RetrieveTask) task, parseXmlTorrents(xmlResult), null); } + } catch (DaemonException e) { + throw e; } catch (Exception e) { // it's probably an old client, parse HTML instead String htmlResult = makeRequest(log, "/panel/task_list"); @@ -243,7 +245,7 @@ public class BitCometAdapter implements IDaemonAdapter { task.getMethod() + " is not supported by " + getType())); } } catch (DaemonException e) { - return new DaemonTaskFailureResult(task, new DaemonException(ExceptionType.ParsingFailed, e.toString())); + return new DaemonTaskFailureResult(task, e); } } @@ -290,6 +292,10 @@ public class BitCometAdapter implements IDaemonAdapter { // Make the request HttpResponse response = httpclient.execute(new HttpGet(buildWebUIUrl(url))); + int statusCode = response.getStatusLine().getStatusCode(); + if (statusCode == 401 || statusCode == 403) { + throw new DaemonException(ExceptionType.AuthenticationFailure, "Response code " + statusCode); + } HttpEntity entity = response.getEntity(); if (entity != null) { @@ -309,6 +315,9 @@ public class BitCometAdapter implements IDaemonAdapter { throw new DaemonException(ExceptionType.ConnectionError, e.toString()); } catch (Exception e) { log.d(LOG_NAME, "Error: " + e.toString()); + if (e instanceof DaemonException) { + throw (DaemonException) e; + } throw new DaemonException(ExceptionType.ConnectionError, e.toString()); }