summaryrefslogtreecommitdiff
path: root/plugins/Irc/ircmanager.php
diff options
context:
space:
mode:
authorLuke Fitzgerald <lw.fitzgerald@googlemail.com>2010-08-10 19:23:45 -0700
committerLuke Fitzgerald <lw.fitzgerald@googlemail.com>2010-08-10 19:23:45 -0700
commit9da2368383701988dbca08544479c95ad8a7c11f (patch)
treedb329e8bcb9ed79033848c1bf33163dd48f7b78f /plugins/Irc/ircmanager.php
parent8005bdb421eaad1c77195d8efa4aaf169082d51d (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.php25
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();