diff options
author | Dmitry Isaikin <isaikin-dmitry@yandex.ru> | 2016-05-19 20:58:38 +0400 |
---|---|---|
committer | HoĆ V. DINH <dinh.viet.hoa@gmail.com> | 2016-05-19 09:58:38 -0700 |
commit | 6ea3534c94ced99a10682916c2718be8b93056da (patch) | |
tree | ea797cad294800cef0ca4a3b03dbc72230894c47 /src/objc | |
parent | 6a720fd8bf82d6220330f148ca8ad351b690a9fd (diff) |
Store last server response on login command in case of parse error (#1436)
Diffstat (limited to 'src/objc')
-rw-r--r-- | src/objc/abstract/MCOConstants.h | 2 | ||||
-rw-r--r-- | src/objc/imap/MCOIMAPCheckAccountOperation.mm | 7 |
2 files changed, 7 insertions, 2 deletions
diff --git a/src/objc/abstract/MCOConstants.h b/src/objc/abstract/MCOConstants.h index b2a890ab..8fa4d115 100644 --- a/src/objc/abstract/MCOConstants.h +++ b/src/objc/abstract/MCOConstants.h @@ -461,5 +461,7 @@ typedef void (^MCOOperationQueueRunningChangeBlock)(void); /** MCOIMAPResponseKey is a key for NSError userInfo dictionary, the value is string with the server response. */ #define MCOIMAPResponseKey @"MCOIMAPResponseKey" +/** MCOIMAPUnparsedResponseDataKey is a key for NSError userInfo dictionary, the value is data with the unparsed server response in case of ParseError. */ +#define MCOIMAPUnparsedResponseDataKey @"MCOIMAPUnparsedResponseDataKey" #endif diff --git a/src/objc/imap/MCOIMAPCheckAccountOperation.mm b/src/objc/imap/MCOIMAPCheckAccountOperation.mm index 0c6161c4..0c9f7e51 100644 --- a/src/objc/imap/MCOIMAPCheckAccountOperation.mm +++ b/src/objc/imap/MCOIMAPCheckAccountOperation.mm @@ -62,9 +62,12 @@ typedef void (^CompletionType)(NSError *error); _completionBlock(nil); } else { NSError * error = [NSError mco_errorWithErrorCode:op->error()]; - if (op->loginResponse() != NULL) { + if (op->loginResponse() != NULL || op->loginUnparsedResponseData() != NULL) { NSMutableDictionary * userInfo = [[error userInfo] mutableCopy]; - userInfo[MCOIMAPResponseKey] = MCO_TO_OBJC(op->loginResponse()); + if (op->loginResponse() != NULL) + userInfo[MCOIMAPResponseKey] = MCO_TO_OBJC(op->loginResponse()); + if (op->loginUnparsedResponseData() != NULL) + userInfo[MCOIMAPUnparsedResponseDataKey] = MCO_TO_OBJC(op->loginUnparsedResponseData()); error = [NSError errorWithDomain:[error domain] code:[error code] userInfo:userInfo]; [userInfo release]; } |