Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit 4a03b589 authored by cketti's avatar cketti Committed by GitHub
Browse files

Merge pull request #6066 from k9mail/fix_imap_xoauth2_flow

Fix XOAUTH2 response parsing in IMAP code
parents 22052027 553cbbb8
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -447,15 +447,17 @@ class RealImapConnection implements ImapConnection {
    }

    private void handleXOAuthUntaggedResponse(ImapResponse response) throws IOException {
        if (!response.isContinuationRequested()) {
            return;
        }

        if (response.isString(0)) {
            retryXoauth2WithNewToken = XOAuth2ChallengeParser.shouldRetry(response.getString(0), settings.getHost());
        }

        if (response.isContinuationRequested()) {
        outputStream.write("\r\n".getBytes());
        outputStream.flush();
    }
    }

    private List<ImapResponse> authCramMD5() throws MessagingException, IOException {
        String command = Commands.AUTHENTICATE_CRAM_MD5;
+0 −1068

File deleted.

Preview size limit exceeded, changes collapsed.

+1073 −0

File added.

Preview size limit exceeded, changes collapsed.

+70 −0
Original line number Diff line number Diff line
package com.fsck.k9.mail

import com.fsck.k9.logging.Logger

class SystemOutLogger : Logger {
    override fun v(message: String?, vararg args: Any?) {
        System.out.printf("V/ ${message.orEmpty()}\n", *args)
    }

    override fun v(t: Throwable?, message: String?, vararg args: Any?) {
        t?.printStackTrace(System.out)
        v(message, *args)
    }

    override fun v(t: Throwable?) {
        t?.printStackTrace(System.out)
    }

    override fun d(message: String?, vararg args: Any?) {
        System.out.printf("D/ ${message.orEmpty()}\n", *args)
    }

    override fun d(t: Throwable?, message: String?, vararg args: Any?) {
        t?.printStackTrace(System.out)
        d(message, *args)
    }

    override fun d(t: Throwable?) {
        t?.printStackTrace(System.out)
    }

    override fun i(message: String?, vararg args: Any?) {
        System.out.printf("I/ ${message.orEmpty()}\n", *args)
    }

    override fun i(t: Throwable?, message: String?, vararg args: Any?) {
        t?.printStackTrace(System.out)
        i(message, *args)
    }

    override fun i(t: Throwable?) {
        t?.printStackTrace(System.out)
    }

    override fun w(message: String?, vararg args: Any?) {
        System.out.printf("W/ ${message.orEmpty()}\n", *args)
    }

    override fun w(t: Throwable?, message: String?, vararg args: Any?) {
        t?.printStackTrace(System.out)
        w(message, *args)
    }

    override fun w(t: Throwable?) {
        t?.printStackTrace(System.out)
    }

    override fun e(message: String?, vararg args: Any?) {
        System.out.printf("E/ ${message.orEmpty()}\n", *args)
    }

    override fun e(t: Throwable?, message: String?, vararg args: Any?) {
        t?.printStackTrace(System.out)
        e(message, *args)
    }

    override fun e(t: Throwable?) {
        t?.printStackTrace(System.out)
    }
}