OStatus: be a little laxer about attempts to start/stop PuSH subscriptions that were left in an inconsistent state.
Instead of aborting, we'll try to reconfirm the sub/unsub, which once confirmed will replace whatever the previous state was on the server side.
This commit is contained in:
parent
79ec565104
commit
c84c4c6839
|
@ -61,7 +61,7 @@ class FeedSub extends Memcached_DataObject
|
||||||
public $__table = 'feedsub';
|
public $__table = 'feedsub';
|
||||||
|
|
||||||
public $id;
|
public $id;
|
||||||
public $feeduri;
|
public $uri;
|
||||||
|
|
||||||
// PuSH subscription data
|
// PuSH subscription data
|
||||||
public $huburi;
|
public $huburi;
|
||||||
|
@ -238,7 +238,7 @@ class FeedSub extends Memcached_DataObject
|
||||||
public function subscribe($mode='subscribe')
|
public function subscribe($mode='subscribe')
|
||||||
{
|
{
|
||||||
if ($this->sub_state && $this->sub_state != 'inactive') {
|
if ($this->sub_state && $this->sub_state != 'inactive') {
|
||||||
throw new ServerException("Attempting to start PuSH subscription to feed in state $this->sub_state");
|
common_log(LOG_WARNING, "Attempting to (re)start PuSH subscription to $this->uri in unexpected state $this->sub_state");
|
||||||
}
|
}
|
||||||
if (empty($this->huburi)) {
|
if (empty($this->huburi)) {
|
||||||
if (common_config('feedsub', 'nohub')) {
|
if (common_config('feedsub', 'nohub')) {
|
||||||
|
@ -261,7 +261,7 @@ class FeedSub extends Memcached_DataObject
|
||||||
*/
|
*/
|
||||||
public function unsubscribe() {
|
public function unsubscribe() {
|
||||||
if ($this->sub_state != 'active') {
|
if ($this->sub_state != 'active') {
|
||||||
throw new ServerException("Attempting to end PuSH subscription to feed in state $this->sub_state");
|
common_log(LOG_WARNING, "Attempting to (re)end PuSH subscription to $this->uri in unexpected state $this->sub_state");
|
||||||
}
|
}
|
||||||
if (empty($this->huburi)) {
|
if (empty($this->huburi)) {
|
||||||
if (common_config('feedsub', 'nohub')) {
|
if (common_config('feedsub', 'nohub')) {
|
||||||
|
|
|
@ -204,12 +204,13 @@ class Ostatus_profile extends Memcached_DataObject
|
||||||
public function subscribe()
|
public function subscribe()
|
||||||
{
|
{
|
||||||
$feedsub = FeedSub::ensureFeed($this->feeduri);
|
$feedsub = FeedSub::ensureFeed($this->feeduri);
|
||||||
if ($feedsub->sub_state == 'active' || $feedsub->sub_state == 'subscribe') {
|
if ($feedsub->sub_state == 'active') {
|
||||||
|
// Active subscription, we don't need to do anything.
|
||||||
return true;
|
return true;
|
||||||
} else if ($feedsub->sub_state == '' || $feedsub->sub_state == 'inactive') {
|
} else {
|
||||||
|
// Inactive or we got left in an inconsistent state.
|
||||||
|
// Run a subscription request to make sure we're current!
|
||||||
return $feedsub->subscribe();
|
return $feedsub->subscribe();
|
||||||
} else if ('unsubscribe') {
|
|
||||||
throw new FeedSubException("Unsub is pending, can't subscribe...");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -222,15 +223,13 @@ class Ostatus_profile extends Memcached_DataObject
|
||||||
*/
|
*/
|
||||||
public function unsubscribe() {
|
public function unsubscribe() {
|
||||||
$feedsub = FeedSub::staticGet('uri', $this->feeduri);
|
$feedsub = FeedSub::staticGet('uri', $this->feeduri);
|
||||||
if (!$feedsub) {
|
if (!$feedsub || $feedsub->sub_state == '' || $feedsub->sub_state == 'inactive') {
|
||||||
|
// No active PuSH subscription, we can just leave it be.
|
||||||
return true;
|
return true;
|
||||||
}
|
} else {
|
||||||
if ($feedsub->sub_state == 'active') {
|
// PuSH subscription is either active or in an indeterminate state.
|
||||||
|
// Send an unsubscribe.
|
||||||
return $feedsub->unsubscribe();
|
return $feedsub->unsubscribe();
|
||||||
} else if ($feedsub->sub_state == '' || $feedsub->sub_state == 'inactive' || $feedsub->sub_state == 'unsubscribe') {
|
|
||||||
return true;
|
|
||||||
} else if ($feedsub->sub_state == 'subscribe') {
|
|
||||||
throw new FeedSubException("Feed is awaiting subscription, can't unsub...");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user