if (popLogContext) ZimbraLog.popbackContext(ZimbraLog.C_NAME, mSession.getUsername());
if (logPushedUsername != null) ZimbraLog.popbackContext(ZimbraLog.C_NAME, logPushedUsername);
    private boolean processCommand() throws IOException {        OzImapRequest req = new OzImapRequest(mCurrentRequestTag, mCurrentRequestData, mSession);        boolean keepGoing = CONTINUE_PROCESSING;        boolean popLogContext = false;        try {            if (mSession != null) {                ZimbraLog.pushbackContext(ZimbraLog.C_NAME, mSession.getUsername());                popLogContext = true;            }                        // check account status before executing command            if (mMailbox != null)                try {                    Account account = mMailbox.getAccount();                    if (account == null || !account.getAccountStatus().equals(Provisioning.ACCOUNT_STATUS_ACTIVE)) {                        ZimbraLog.imap.warn("account missing or not active; dropping connection");                        return STOP_PROCESSING;                    }                } catch (ServiceException e) {                    ZimbraLog.imap.warn("error checking account status; dropping connection", e);                    return STOP_PROCESSING;                }            keepGoing = executeRequest(req, mSession);        } catch (ImapParseException ipe) {            if (ipe.mTag == null)                sendUntagged("BAD " + ipe.getMessage(), true);            else if (ipe.mCode != null)                sendNO(ipe.mTag, '[' + ipe.mCode + "] " + ipe.getMessage());            else if (ipe.mNO)                sendNO(ipe.mTag, ipe.getMessage());            else                sendBAD(ipe.mTag, ipe.getMessage());        } finally {            if (popLogContext)                ZimbraLog.popbackContext(ZimbraLog.C_NAME, mSession.getUsername());        }        return keepGoing;    }