]> err.no Git - scalable-opengroupware.org/commitdiff
added special handling for permission-denied errors
authorhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Wed, 6 Jul 2005 15:47:18 +0000 (15:47 +0000)
committerhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Wed, 6 Jul 2005 15:47:18 +0000 (15:47 +0000)
git-svn-id: http://svn.opengroupware.org/SOGo/trunk@669 d1b88da0-ebda-0310-925b-ed51d893ca5b

SOGo/SoObjects/Mailer/ChangeLog
SOGo/SoObjects/Mailer/README
SOGo/SoObjects/Mailer/SOGoMailAccounts.m
SOGo/SoObjects/Mailer/SOGoMailManager.m
SOGo/SoObjects/Mailer/Version

index 7ca151f73caa92f03c4a4d1c11a9fceb9246bd72..83d15f983cb8ddf0e976a5888769b64cc6213238 100644 (file)
@@ -1,3 +1,8 @@
+2005-07-06  Helge Hess  <helge.hess@opengroupware.org>
+
+       * SOGoMailManager.m: detect Cyrus 'permission denied' when changing
+         flags and deliver a http-code 403 exception (v0.9.84)
+
 2005-03-25  Helge Hess  <helge.hess@opengroupware.org>
 
        * v0.9.83
index b65f8f9c9bcc1cb59f8e892a5bcb34f7eb24473b..62286e0f6da983b1d37bfd2c089b872f63033485 100644 (file)
@@ -15,4 +15,5 @@ SOGoMailSpoolPath        path   - FS path where mail drafts are stored
 SOGoNoDraftDeleteAfterSend YES|NO - makes the draft's -delete method a NOOP
 
 SOGoSpecialFoldersInRoot   YES|NO - do special folders live under INBOX?
+  - corresponds to the Cyrus setting: "altnamespace: yes"
 SOGoEnableSieveFolder      YES|NO - should the Sieve folder be visible?
index c31717adb23ca5d5cf08724affb38ee274ff43e5..2db0774ea8bfcb1e2e63537e472b27f223a4edea 100644 (file)
@@ -35,7 +35,7 @@
   if (um == nil)
     um = [[AgenorUserManager sharedUserManager] retain];
   
-  uid     = [[self container] davDisplayName];
+  uid     = [[self container] davDisplayName]; /* the uid part of the URL */
   account = [um getIMAPAccountStringForUID:uid];
   
   return account ? [NSArray arrayWithObject:account] : nil;
index ba7a75785652aa8896fcb059c92966f4ef05ad0b..f0af8eb2c9701d2c7a90756c61088d0b5c687a30 100644 (file)
@@ -661,7 +661,7 @@ static NSString       *imap4Separator  = nil;
   
   if (![_f isKindOfClass:[NSArray class]])
     _f = [NSArray arrayWithObjects:&_f count:1];
-
+  
   /* get client */
 
   if ((client = [self imap4ClientForURL:_url password:_p]) == nil)
@@ -683,9 +683,23 @@ static NSString       *imap4Separator  = nil;
                   add:[NSNumber numberWithBool:_flag]
                   flags:_f];
   if (![[result valueForKey:@"result"] boolValue]) {
+    unsigned int status;
+    NSString *r;
+    
+    r = [result valueForKey:@"reason"];
+    if ([r isEqualToString:@"Permission denied"]) {
+      /* different for each server?, no error codes in IMAP4 ... */
+      status = 403 /* Forbidden */;
+    }
+    else
+      status = 500 /* internal server error */;
+    
     [self logWithFormat:@"DEBUG: fail result %@", result];
-    return [NSException exceptionWithHTTPStatus:500 /* server error */
-                       reason:@"failed to add flag to IMAP4 message"];
+
+    r = [@"Failed to add flag to IMAP4 message: " stringByAppendingString:r];
+    
+    return [NSException exceptionWithHTTPStatus:status /* server error */
+                       reason:r];
   }
   /* result contains 'fetch' key with the current flags */
   return nil;
index a2cadb181bbd0fe669f0fc1c629575c5fd0f9054..73737778ec1147876b7da34940944633568ef7c4 100644 (file)
@@ -1,6 +1,6 @@
 # Version file
 
-SUBMINOR_VERSION:=83
+SUBMINOR_VERSION:=84
 
 # v0.9.69 requires libNGMime       v4.5.210
 # v0.9.55 requires libNGExtensions v4.5.136