]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
TwitterBridge: discard outgoing queue items instead of retrying when Twitter API...
authorBrion Vibber <brion@pobox.com>
Fri, 25 Mar 2011 01:41:25 +0000 (18:41 -0700)
committerBrion Vibber <brion@pobox.com>
Fri, 25 Mar 2011 01:41:25 +0000 (18:41 -0700)
We get HTTP 400 for various cases of invalid data, where retrying doesn't help at all -- previously those would loop forever, or until something died at least. :)
400 is also used for rate limiting, but retrying *immediately* will just hit the rate limit again, so better to discard if we're going over for now.

plugins/TwitterBridge/twitter.php

index f5a0b62588d7428062a65bed2edf51bd098a8fbc..2c68f89f169ed0259f5f5429315385572f1cb6d4 100644 (file)
@@ -320,7 +320,20 @@ function process_error($e, $flink, $notice)
 
     common_log(LOG_WARNING, $logmsg);
 
+    // http://dev.twitter.com/pages/responses_errors
     switch($code) {
+     case 400:
+         // Probably invalid data (bad Unicode chars or coords) that
+         // cannot be resolved by just sending again.
+         //
+         // It could also be rate limiting, but retrying immediately
+         // won't help much with that, so we'll discard for now.
+         // If a facility for retrying things later comes up in future,
+         // we can detect the rate-limiting headers and use that.
+         //
+         // Discard the message permanently.
+         return true;
+         break;
      case 401:
         // Probably a revoked or otherwise bad access token - nuke!
         remove_twitter_link($flink);
@@ -330,6 +343,13 @@ function process_error($e, $flink, $notice)
         // User has exceeder her rate limit -- toss the notice
         return true;
         break;
+     case 404:
+         // Resource not found. Shouldn't happen much on posting,
+         // but just in case!
+         //
+         // Consider it a matter for tossing the notice.
+         return true;
+         break;
      default:
 
         // For every other case, it's probably some flakiness so try