+++ og_mailhandler.module	2010-05-21 22:40:30.000000000 +0530
@@ -16,9 +16,18 @@
  * see http://drupal.org/node/136606#comment-1860524
  */
 function og_mailhandler_mailhandler($node, $result, $i, $header, $mailbox) {
-  if ( isset($node->og_groups) && is_array($node->og_groups) ) {
-    $node->og_groups = array_combine($node->og_groups, $node->og_groups);
+    if ( isset($node->og_groups) ) {
+    if (is_array($node->og_groups) ) {
+      $node->og_groups = array_combine($node->og_groups, $node->og_groups);
+      } else {
+      if ($node->og_groups == '*') {
+        global $user;
+        $groups = array_keys($user->og_groups);
+        $node->og_groups = array_combine($groups, $groups);
+      }
+    }
   }
+
   return $node ;
 }
 
@@ -47,6 +56,8 @@ function og_mailhandler_nodeapi(&$node, 
             // watchdog('og_mailhandler','UID'.$user->uid.' is a not member of Group '.$gid);
             unset($node->og_groups[$k]) ;
             watchdog('og_mailhandler',t('Post by !name to OG Group !gid is not allowed',$args));
+            } else {
+            $ugid=$gid;
           }
         }
         /* we've excluded groups this user can't post to. if there are none left, reject the post */
@@ -54,9 +65,14 @@ function og_mailhandler_nodeapi(&$node, 
           // watchdog('og_mailhandler','Groups for this node is empty, so will drop it.');
           form_set_error('',t('Rejected post by !name',$args));
           watchdog('og_mailhandler',t('Rejected post by !name',$args));
+          } else {
+          global $user;
+
+          og_set_group_context(node_load($ugid)); // we'll set the context as the last group we see.... Why not.
+          og_user_roles_grant_roles($user, og_get_group_context());
         }
       }
     }
     break ;
   }
-}
\ No newline at end of file
+}
