]> err.no Git - scalable-opengroupware.org/commitdiff
improved stability with failed IMAP4 logins
authorhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Tue, 19 Jul 2005 08:54:48 +0000 (08:54 +0000)
committerhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Tue, 19 Jul 2005 08:54:48 +0000 (08:54 +0000)
git-svn-id: http://svn.opengroupware.org/SOGo/trunk@816 d1b88da0-ebda-0310-925b-ed51d893ca5b

17 files changed:
SOGo/SoObjects/Mailer/ChangeLog
SOGo/SoObjects/Mailer/README
SOGo/SoObjects/Mailer/SOGoCalendarMailBodyPart.m
SOGo/SoObjects/Mailer/SOGoDraftObject.m
SOGo/SoObjects/Mailer/SOGoDraftsFolder.m
SOGo/SoObjects/Mailer/SOGoImageMailBodyPart.m
SOGo/SoObjects/Mailer/SOGoMailAccount.m
SOGo/SoObjects/Mailer/SOGoMailBaseObject.h
SOGo/SoObjects/Mailer/SOGoMailBaseObject.m
SOGo/SoObjects/Mailer/SOGoMailBodyPart.m
SOGo/SoObjects/Mailer/SOGoMailFolder.m
SOGo/SoObjects/Mailer/SOGoMailObject.m
SOGo/SoObjects/Mailer/SOGoMessageMailBodyPart.m
SOGo/SoObjects/Mailer/SOGoSharedInboxFolder.m
SOGo/SoObjects/Mailer/SOGoSharedMailAccount.m
SOGo/SoObjects/Mailer/SOGoVCardMailBodyPart.m
SOGo/SoObjects/Mailer/Version

index bec74cc5282afba664ca266fd3d67a4a78ea5e5b..3684ff0823a891ce8e89a6c0b43558463a38ac6b 100644 (file)
@@ -1,3 +1,12 @@
+2005-07-19  Helge Hess  <helge.hess@opengroupware.org>
+
+       * v0.9.109
+
+       * added fragile base class version checks to most classes
+
+       * SOGoMailBaseObject.m: cache failed login attempts (+ connection) to
+         improve failed-login behaviour
+
 2005-07-18  Helge Hess  <helge.hess@opengroupware.org>
 
        * SOGoDraftObject.m: send text/* attachments with disposition 'attach'
index 440c0632ffb16b2feb40d9fb83b4ba0e6709b2da..2be7a9bb620152ab85b42b03f0101f1818d47327 100644 (file)
@@ -24,11 +24,8 @@ Class Hierarchy
       SOGoMailFolder
         SOGoSharedInboxFolder
       SOGoMailObject
-  SOGoMailConnectionEntry
   [EODataSource]
     SOGoMailFolderDataSource
-  SOGoMailManager
-  SOGoMailboxInfo
 
 Defaults
 ========
index 50d0a28e7211d005af4ca686b53deca47cc34d24..b001b8b7560a72ad331ee6641a28be84724b5b92 100644 (file)
 #include "common.h"
 
 @implementation SOGoCalendarMailBodyPart
+
++ (int)version {
+  return [super version] + 0 /* v1 */;
+}
+
++ (void)initialize {
+  NSAssert2([super version] == 1,
+            @"invalid superclass (%@) version %i !",
+            NSStringFromClass([self superclass]), [super version]);
+}
+
 @end /* SOGoCalendarMailBodyPart */
index 02fe48d1f444f3b05b65bad73e6de66a228abcd3..60d417ba3abb69d59b79920dc856ffac774dfcca 100644 (file)
@@ -41,8 +41,16 @@ static BOOL       draftDeleteDisabled = NO; // for debugging
 static BOOL       debugOn = NO;
 static BOOL       showTextAttachmentsInline = NO;
 
++ (int)version {
+  return [super version] + 0 /* v1 */;
+}
+
 + (void)initialize {
   NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
+
+  NSAssert2([super version] == 1,
+            @"invalid superclass (%@) version %i !",
+            NSStringFromClass([self superclass]), [super version]);
   
   /* Note: be aware of the charset issues before enabling this! */
   showTextAttachmentsInline = [ud boolForKey:@"SOGoShowTextAttachmentsInline"];
index 0f10cd2126708b7448b487bb044e57a7bb467f26..001953747d7f0acb3d15f510e129848d0d69b94b 100644 (file)
 
 static NSString *spoolFolder = nil;
 
++ (int)version {
+  return [super version] + 0 /* v1 */;
+}
+
 + (void)initialize {
   NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
+
+  NSAssert2([super version] == 1,
+            @"invalid superclass (%@) version %i !",
+            NSStringFromClass([self superclass]), [super version]);
   
   spoolFolder = [[ud stringForKey:@"SOGoMailSpoolPath"] copy];
   if ([spoolFolder length] < 3)
index 3a4f1a51fb031377969970e17a468127c257e9c3..b2b94ff23d32b333a653c2d25061ba6a4e985d06 100644 (file)
 #include "common.h"
 
 @implementation SOGoImageMailBodyPart
+
++ (int)version {
+  return [super version] + 0 /* v1 */;
+}
+
++ (void)initialize {
+  NSAssert2([super version] == 1,
+            @"invalid superclass (%@) version %i !",
+            NSStringFromClass([self superclass]), [super version]);
+}
+
 @end /* SOGoImageMailBodyPart */
index a20b518c9ab2e240e683deb8383e36181583aa13..b6479a92b41b5aadb817160232e5e562d7e69c8c 100644 (file)
@@ -36,8 +36,16 @@ static NSString *sharedFolderName     = @""; // TODO: add English default
 static NSString *otherUsersFolderName = @""; // TODO: add English default
 static BOOL     useAltNamespace       = NO;
 
++ (int)version {
+  return [super version] + 0 /* v1 */;
+}
+
 + (void)initialize {
   NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
+
+  NSAssert2([super version] == 1,
+            @"invalid superclass (%@) version %i !",
+            NSStringFromClass([self superclass]), [super version]);
   
   useAltNamespace = [ud boolForKey:@"SOGoSpecialFoldersInRoot"];
   
index 924052f031e270826c09c9096eb1db374c9d5be2..cc0de820281315afcd9f962c18eded76bff6d2b2 100644 (file)
@@ -44,7 +44,8 @@
 
 @interface SOGoMailBaseObject : SOGoObject
 {
-  NSURL *imap4URL;
+  NSURL             *imap4URL;
+  NGImap4Connection *imap4;
 }
 
 - (id)initWithImap4URL:(NSURL *)_url inContainer:(id)_container;
index 836f534c04cf83cc904542f02937f26664dc2d36..ecd1a45f336c59c0c7993445ac08f93a4a2aebfd 100644 (file)
 
 @implementation SOGoMailBaseObject
 
++ (int)version {
+  return [super version] + 1 /* v1 */;
+}
++ (void)initialize {
+  NSAssert2([super version] == 0,
+            @"invalid superclass (%@) version %i !",
+            NSStringFromClass([self superclass]), [super version]);
+}
+
 #if 0
 static BOOL debugOn = YES;
 #endif
@@ -65,8 +74,15 @@ static BOOL debugOn = YES;
   return [NGImap4ConnectionManager defaultConnectionManager];
 }
 - (NGImap4Connection *)imap4Connection {
-  return [[self mailManager] connectionForURL:[self imap4URL] 
-                            password:[self imap4Password]];
+  if (self->imap4 == nil) {
+    self->imap4 = [[[self mailManager] connectionForURL:[self imap4URL] 
+                                      password:[self imap4Password]] retain];
+    if (self->imap4 == nil) {
+      [self errorWithFormat:@"Could not connect IMAP4."];
+      self->imap4 = [[NSNull null] retain];
+    }
+  }
+  return [self->imap4 isNotNull] ? self->imap4 : nil;
 }
 
 - (NSString *)relativeImap4Name {
index b9884fb5d6e78f9f4ae804603fbd985e13aa68de..f13feabd55b9c2253310470ce35b688f1e774f19 100644 (file)
 
 static BOOL debugOn = NO;
 
++ (int)version {
+  return [super version] + 0 /* v1 */;
+}
+
++ (void)initialize {
+  NSAssert2([super version] == 1,
+            @"invalid superclass (%@) version %i !",
+            NSStringFromClass([self superclass]), [super version]);
+}
+
 - (void)dealloc {
   [self->partInfo   release];
   [self->identifier release];
index c8009fefe09841fba3bfc176d509137b193de1a9..60b300aea592413956ab9181997228b1fa3e5d6a 100644 (file)
 
 @implementation SOGoMailFolder
 
++ (int)version {
+  return [super version] + 0 /* v1 */;
+}
+
++ (void)initialize {
+  NSAssert2([super version] == 1,
+            @"invalid superclass (%@) version %i !",
+            NSStringFromClass([self superclass]), [super version]);
+}
+
 - (void)dealloc {
   [self->selectInfo release];
   [self->filenames  release];
index 6cbfc51a67695f7b280b2b77c47cc29941135f28..713a1e9fa8a5bab84e67fc88c97de67c9e8dc3d9 100644 (file)
@@ -36,7 +36,15 @@ static BOOL debugOn            = NO;
 static BOOL debugBodyStructure = NO;
 static BOOL debugSoParts       = NO;
 
++ (int)version {
+  return [super version] + 0 /* v1 */;
+}
+
 + (void)initialize {
+  NSAssert2([super version] == 1,
+            @"invalid superclass (%@) version %i !",
+            NSStringFromClass([self superclass]), [super version]);
+
   /* Note: see SOGoMailManager.m for allowed IMAP4 keys */
   /* Note: "BODY" actually returns the structure! */
   coreInfoKeys = [[NSArray alloc] initWithObjects:
index cfc5ad2962f19c51cf7b193b3ea623149d8927ca..32e2da9a818d8ff324442662308a4ff0e17a9895 100644 (file)
 #include "common.h"
 
 @implementation SOGoMessageMailBodyPart
+
++ (int)version {
+  return [super version] + 0 /* v1 */;
+}
+
++ (void)initialize {
+  NSAssert2([super version] == 1,
+            @"invalid superclass (%@) version %i !",
+            NSStringFromClass([self superclass]), [super version]);
+}
+
 @end /* SOGoMessageMailBodyPart */
index d5e444bffe2af018f8c0371739c67a45ae110303..85a98f473883984490944bbad9c6e17cb2be930b 100644 (file)
 
 @implementation SOGoSharedInboxFolder
 
++ (int)version {
+  return [super version] + 0 /* v1 */;
+}
+
++ (void)initialize {
+  NSAssert2([super version] == 1,
+            @"invalid superclass (%@) version %i !",
+            NSStringFromClass([self superclass]), [super version]);
+}
+
 /* listing available folders */
 
 - (NSArray *)toManyRelationshipKeys {
index 9aa194c5ecdcc6082a395f9d79a6f7cfe1045555..08969d73505b6de993d4345306973859fcdb7782 100644 (file)
 
 static NSString *otherUsersFolderName = @""; // TODO: add English default
 
++ (int)version {
+  return [super version] + 0 /* v1 */;
+}
+
 + (void)initialize {
   NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
+
+  NSAssert2([super version] == 1,
+            @"invalid superclass (%@) version %i !",
+            NSStringFromClass([self superclass]), [super version]);
   
   otherUsersFolderName = [ud stringForKey:@"SOGoOtherUsersFolderName"];
   NSLog(@"Note: using other-users-folders name: '%@'", otherUsersFolderName);
index 8dabfc863e3529a0864b2159059cb2e8d7e69169..13ce223172957609122b22d0931c45e4dcdb68c3 100644 (file)
 #include "common.h"
 
 @implementation SOGoVCardMailBodyPart
+
++ (int)version {
+  return [super version] + 0 /* v1 */;
+}
+
++ (void)initialize {
+  NSAssert2([super version] == 1,
+            @"invalid superclass (%@) version %i !",
+            NSStringFromClass([self superclass]), [super version]);
+}
+
 @end /* SOGoVCardMailBodyPart */
index 0c2f875cb13a1c7459625d439f2755ff5f8628d7..5443d4664d639bc42c22e3a32967fcb0b6d949ca 100644 (file)
@@ -1,6 +1,6 @@
 # Version file
 
-SUBMINOR_VERSION:=108
+SUBMINOR_VERSION:=109
 
 # v0.9.96 requires libNGMime       v4.5.223
 # v0.9.91 requires libNGMime       v4.5.222