diff --git a/actions/remotesubscribe.php b/actions/remotesubscribe.php index c2c633c16a..f454a14007 100644 --- a/actions/remotesubscribe.php +++ b/actions/remotesubscribe.php @@ -129,23 +129,55 @@ class RemotesubscribeAction extends Action { # XXX: the following code could probably be refactored to eliminate dupes + common_debug('remotesubscribe.php - looking for oauth discovery service'); + $oauth_service = $xrds->services(omb_service_filter(OAUTH_DISCOVERY)); if (!$oauth_service) { + common_debug('remotesubscribe.php - failed to find oauth discovery service'); return NULL; } + common_debug('remotesubscribe.php - looking for oauth discovery XRD'); + $xrd = $this->getXRD($oauth_service, $xrds); - $this->addServices($xrd, $oauth_endpoints, $omb); + + if (!$xrd) { + common_debug('remotesubscribe.php - failed to find oauth discovery XRD'); + return NULL; + } + + common_debug('remotesubscribe.php - adding OAuth services from XRD'); + + if (!$this->addServices($xrd, $oauth_endpoints, $omb)) { + common_debug('remotesubscribe.php - failed to add OAuth services'); + return NULL; + } + common_debug('remotesubscribe.php - looking for OMB discovery service'); + $omb_service = $xrds->services(omb_service_filter(OMB_NAMESPACE)); if (!$omb_service) { + common_debug('remotesubscribe.php - failed to find OMB discovery service'); return NULL; } + common_debug('remotesubscribe.php - looking for OMB discovery XRD'); + $xrd = $this->getXRD($omb_service, $xrds); - $this->addServices($xrd, $omb_endpoints, $omb); + + if (!$xrd) { + common_debug('remotesubscribe.php - failed to find OMB discovery XRD'); + return NULL; + } + + common_debug('remotesubscribe.php - adding OMB services from XRD'); + + if (!$this->addServices($xrd, $omb_endpoints, $omb)) { + common_debug('remotesubscribe.php - failed to add OMB services'); + return NULL; + } # XXX: check that we got all the services we needed diff --git a/lib/omb.php b/lib/omb.php index 5f31de42c1..ae7531ce8e 100644 --- a/lib/omb.php +++ b/lib/omb.php @@ -75,6 +75,9 @@ function omb_match_service($service, $type) { } function omb_service_uri($service) { + if (!$service) { + return NULL; + } $uris = $service->getURIs(); if (!$uris) { return NULL;