afuna: Cat under a blanket. Text: "Cats are just little people with Fur and Fangs" (Default)
afuna ([personal profile] afuna) wrote in [site community profile] changelog2009-06-09 04:26 pm

[dw-free] periodic inability to join communities

[commit: http://hg.dwscoalition.org/dw-free/rev/17ca5b4d2b8b]

http://bugs.dwscoalition.org/show_bug.cgi?id=1139

Operating on edges is a 'best effort' thing, so don't return immediately on
failure. Still return the status, though.

Patch by [personal profile] kareila.

Files modified:
  • cgi-bin/DW/User/Edges.pm
--------------------------------------------------------------------------------
diff -r fb8df8611779 -r 17ca5b4d2b8b cgi-bin/DW/User/Edges.pm
--- a/cgi-bin/DW/User/Edges.pm	Mon Jun 08 15:02:22 2009 +0000
+++ b/cgi-bin/DW/User/Edges.pm	Tue Jun 09 16:25:55 2009 +0000
@@ -168,6 +168,7 @@ sub add_edge {
     # now we try to add these edges.  note that we do this in this way so that
     # multiple edges can be consumed by one add sub.
     my @to_add = keys %edges;
+    my $ok = 1;
     while ( my $key = shift @to_add ) {
 
         # some modules will define multiple edges, and so one call to add_sub might
@@ -178,11 +179,11 @@ sub add_edge {
         # simply calls an add_sub to handle the edge.  we expect them to remove the
         # edge from the hashref if they process it.
         my $success = $DW::User::Edges::VALID_EDGES{$key}->{add_sub}->( $from_u, $to_u, \%edges );
-        return 0 unless $success;
+        $ok &&= $success;  # will zero out if any edges fail
     }
 
     # all good
-    return 1;
+    return $ok;
 }
 
 # removes an edge between two users
@@ -200,6 +201,7 @@ sub remove_edge {
     # now we try to remove these edges.  note that we do this in this way so that
     # multiple edges can be consumed by one remove sub.
     my @to_del = keys %edges;
+    my $ok = 1;
     while ( my $key = shift @to_del ) {
 
         # some modules will define multiple edges, and so one call to add_sub might
@@ -210,11 +212,11 @@ sub remove_edge {
         # simply calls an add_sub to handle the edge.  we expect them to remove the
         # edge from the hashref if they process it.
         my $success = $DW::User::Edges::VALID_EDGES{$key}->{del_sub}->( $from_u, $to_u, \%edges );
-        return 0 unless $success;
+        $ok &&= $success;  # will zero out if any edges fail
     }
 
     # all good
-    return 1;
+    return $ok;
 }
 
 # and now we link these into the LJ::User namespace for backwards compatibility
--------------------------------------------------------------------------------

Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org