diff options
author | Luke Fitzgerald <lw.fitzgerald@googlemail.com> | 2010-08-10 19:23:45 -0700 |
---|---|---|
committer | Luke Fitzgerald <lw.fitzgerald@googlemail.com> | 2010-08-10 19:23:45 -0700 |
commit | 9da2368383701988dbca08544479c95ad8a7c11f (patch) | |
tree | db329e8bcb9ed79033848c1bf33163dd48f7b78f /plugins/Irc/ircmanager.php | |
parent | 8005bdb421eaad1c77195d8efa4aaf169082d51d (diff) |
Retry using the waiting queue so as to preserve message ordering
Diffstat (limited to 'plugins/Irc/ircmanager.php')
-rw-r--r-- | plugins/Irc/ircmanager.php | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/plugins/Irc/ircmanager.php b/plugins/Irc/ircmanager.php index aa0ff3539..5f55e6b34 100644 --- a/plugins/Irc/ircmanager.php +++ b/plugins/Irc/ircmanager.php @@ -101,19 +101,21 @@ class IrcManager extends ImManager { $this->messageWaiting = false; return; } - $data = unserialize($wm->data); - if (!$this->send_raw_message($data)) { - $this->plugin->enqueue_outgoing_raw( - array( - 'type' => 'message', - 'prioritise' => $data['prioritise'], - 'data' => $data['data'] - ) - ); + $data = unserialize($wm->data); + $wm->incAttempts(); + + if ($this->send_raw_message($data)) { + $wm->delete(); + } else { + if ($wm->attempts <= common_config('queue', 'max_retries')) { + // Try again next idle + $wm->releaseClaim(); + } else { + // Exceeded the maximum number of retries + $wm->delete(); + } } - - $wm->delete(); } } } @@ -276,6 +278,7 @@ class IrcManager extends ImManager { $wm->data = serialize($data); $wm->prioritise = $data['prioritise']; + $wm->attempts = 0; $wm->created = common_sql_now(); $result = $wm->insert(); |