Try classic login as last resort

pull/191/head
M66B 4 years ago
parent 3e9d4ac554
commit ab8cb73739

@ -910,27 +910,27 @@ public class IMAPStore extends Store
continue; continue;
} }
} catch (ProtocolException ex) { } catch (ProtocolException ex) {
eu.faircode.email.Log.w(ex);
if (pex == null) if (pex == null)
pex = ex; pex = ex;
if (m.equals("PLAIN") || m.equals("LOGIN")) {
eu.faircode.email.Log.w("Falling back to classic LOGIN");
try {
p.authclassic(user, password);
return;
} catch (ProtocolException exex) {
eu.faircode.email.Log.w(exex);
}
}
} }
} }
if (pex != null) if (!p.hasCapability("LOGINDISABLED"))
throw pex; try {
eu.faircode.email.Log.i("Trying LOGIN");
p.login(user, password);
return;
} catch (ProtocolException ex) {
if (pex == null)
pex = ex;
}
if (!p.hasCapability("LOGINDISABLED")) { if (pex != null) {
p.login(user, password); if (eu.faircode.email.BuildConfig.PLAY_STORE_RELEASE)
return; eu.faircode.email.Log.i(pex);
else
eu.faircode.email.Log.w(pex);
throw pex;
} }
throw new ProtocolException("No login methods supported!"); throw new ProtocolException("No login methods supported!");

@ -630,60 +630,6 @@ public class IMAPProtocol extends Protocol {
authenticated = true; authenticated = true;
} }
public synchronized void authclassic(String u, String p)
throws ProtocolException {
List<Response> v = new ArrayList<>();
String tag = null;
Response r = null;
boolean done = false;
try {
if (noauthdebug && isTracing()) {
logger.fine("LOGIN command trace suppressed");
suspendTracing();
}
try {
Argument arg = new Argument();
arg.writeNString(u);
arg.writeNString(p);
tag = writeCommand("LOGIN", arg);
} catch (Exception ex) {
r = Response.byeResponse(ex);
done = true;
}
while (!done) {
try {
r = readResponse();
if (r.isTagged() && r.getTag().equals(tag))
done = true;
else if (r.isBYE()) // outta here
done = true;
} catch (Exception ioex) {
r = Response.byeResponse(ioex);
done = true;
}
v.add(r);
}
} finally {
resumeTracing();
}
Response[] responses = v.toArray(new Response[v.size()]);
handleCapabilityResponse(responses);
notifyResponseHandlers(responses);
if (noauthdebug && isTracing())
logger.fine("LOGIN command result: " + r);
handleLoginResult(r);
setCapabilities(r);
authenticated = true;
}
/** /**
* The AUTHENTICATE command with AUTH=PLAIN authentication scheme. * The AUTHENTICATE command with AUTH=PLAIN authentication scheme.
* This is based heavly on the {@link #authlogin} method. * This is based heavly on the {@link #authlogin} method.

Loading…
Cancel
Save