]> err.no Git - sope/commitdiff
some fix for bug 1875
authorhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Mon, 28 May 2007 12:44:57 +0000 (12:44 +0000)
committerhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Mon, 28 May 2007 12:44:57 +0000 (12:44 +0000)
git-svn-id: http://svn.opengroupware.org/SOPE/trunk@1485 e4a50df8-12e2-0310-a44c-efbce7f8a7e3

sope-mime/ChangeLog
sope-mime/NGImap4/ChangeLog
sope-mime/NGImap4/NGImap4ResponseNormalizer.m
sope-mime/Version

index b0536d22c660fde4dd895e64444966679180416b..83519a8d0100991f46f51b83f00ae32a8e890915 100644 (file)
@@ -1,3 +1,7 @@
+2007-05-28  Helge Hess  <helge.hess@opengroupware.org>
+
+       * NGImap4: changed behaviour wrt bug 1875 (v4.7.244)
+
 2007-02-12  Helge Hess  <helge.hess@opengroupware.org>
 
        * NGImap4: fixed a gstep-base compilation warning (v4.7.243)
index 86c267631e8baa384f60d85078e9bf5345e24b0c..cf1a60b5dfd208e6d143b72e22ebb01110c3f880 100644 (file)
@@ -1,3 +1,8 @@
+2007-05-28  Helge Hess  <helge.hess@opengroupware.org>
+
+       * NGImap4ResponseNormalizer.m: changed not to throw an exception in the
+         situation described in OGo bug 1875
+
 2007-02-12  Helge Hess  <helge.hess@opengroupware.org>
 
        * NGImap4Functions.m, NGSieveClient.m: fixed a gstep-base compilation
index 7ca2d1533bb400f80dff6696d2d55a6ddb46382d..dfe4cf1ad859e4416cf0f2a9cc6eb8d847851f4e 100644 (file)
@@ -1,5 +1,6 @@
 /*
-  Copyright (C) 2000-2005 SKYRIX Software AG
+  Copyright (C) 2000-2007 SKYRIX Software AG
+  Copyright (C) 2007      Helge Hess
 
   This file is part of SOPE.
 
@@ -201,6 +202,20 @@ static int      LogImapEnabled = -1;
       flags  : NSArray
       unseen : NSNumber
       access  : NSString ([READ-WRITE], ... )
+    
+    Eg:
+      17 select "INBOX"
+      * FLAGS (\Answered \Flagged \Draft \Deleted \Seen)
+      * OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen \*)]  
+      * OK (seen state failure) Unable to preserve \Seen state: System I/O \
+          error
+      * 0 EXISTS
+      * 0 RECENT
+      * OK [UIDVALIDITY 1016867500]  
+      * OK [UIDNEXT 18948]  
+      * OK [NOMODSEQ] Sorry, modsequences have not been enabled on this \
+          mailbox
+      17 OK [READ-WRITE] Completed
   */
   NSDictionary        *obj;
   NSEnumerator        *enumerator;
@@ -209,28 +224,33 @@ static int      LogImapEnabled = -1;
   
   result = [self normalizeResponse:_map];
   
-  if ((flags = [[_map objectEnumeratorForKey:@"flags"] nextObject]))
+  if ((flags = [[_map objectEnumeratorForKey:@"flags"] nextObject]) != nil)
     [result setObject:_imapFlags2Flags(self, flags) forKey:@"flags"];
   
+  // TODO: document the contents of this dictionary
   enumerator = [_map objectEnumeratorForKey:@"ok"];
-  while ((obj = [enumerator nextObject])) {
+  while ((obj = [enumerator nextObject]) != nil) {
     id o;
     
-    if ((o = [obj  objectForKey:@"unseen"]))
-      [result setObject:o forKey:@"unseen"];
+    if ([obj isKindOfClass:DictClass]) {
+      if ((o = [obj  objectForKey:@"unseen"]))
+        [result setObject:o forKey:@"unseen"];
+    }
+    else
+      [self warnWithFormat:@"unexpected OK object: %@", obj];
   }
   
   enumerator = [_map objectEnumeratorForKey:@"no"];
-  while ((obj = [enumerator nextObject])) {
+  while ((obj = [enumerator nextObject]) != nil) {
     id o;
     
+    // TODO: document this
     if ([obj isKindOfClass:DictClass]) {
-      if ((o = [obj  objectForKey:@"ALERT"]))
+      if ((o = [obj  objectForKey:@"ALERT"]) != nil)
         [result setObject:o forKey:@"alert"];
     }
-    else {
+    else // TODO: this looks wrong, its not safe that this is the ALERT result?
       [result setObject:obj forKey:@"alert"];
-    }
   }
   
   obj = [_map objectForKey:@"ResponseResult"];
index 20bbd922194cb9c9ae44a428668b7e05eebbe206..5afd15393f2c254936e0eb63f9edc0d603b9d3d6 100644 (file)
@@ -2,7 +2,7 @@
 
 MAJOR_VERSION:=4
 MINOR_VERSION:=7
-SUBMINOR_VERSION:=242
+SUBMINOR_VERSION:=244
 
 # v4.5.214 requires libNGExtensions v4.5.146
 # v4.2.149 requires libNGStreams    v4.2.34