summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/DotNetOpenAuth.OpenId.RelyingParty.UI/OpenId/RelyingParty/OpenIdRelyingPartyControlBase.cs45
-rw-r--r--src/DotNetOpenAuth.OpenId.RelyingParty.UI/OpenId/RelyingParty/OpenIdSelector.cs8
2 files changed, 28 insertions, 25 deletions
diff --git a/src/DotNetOpenAuth.OpenId.RelyingParty.UI/OpenId/RelyingParty/OpenIdRelyingPartyControlBase.cs b/src/DotNetOpenAuth.OpenId.RelyingParty.UI/OpenId/RelyingParty/OpenIdRelyingPartyControlBase.cs
index 4a52ee2..ecdfa1f 100644
--- a/src/DotNetOpenAuth.OpenId.RelyingParty.UI/OpenId/RelyingParty/OpenIdRelyingPartyControlBase.cs
+++ b/src/DotNetOpenAuth.OpenId.RelyingParty.UI/OpenId/RelyingParty/OpenIdRelyingPartyControlBase.cs
@@ -630,30 +630,31 @@ namespace DotNetOpenAuth.OpenId.RelyingParty {
// Take an unreliable sneek peek to see if we're in a popup and an OpenID
// assertion is coming in. We shouldn't process assertions in a popup window.
if (this.Page.Request.QueryString[UIPopupCallbackKey] == "1"
- && this.Page.Request.QueryString[UIPopupCallbackParentKey] == null) {
+ && this.Page.Request.QueryString[UIPopupCallbackParentKey] == null) {
// We're in a popup window. We need to close it and pass the
// message back to the parent window for processing.
- this.ScriptClosingPopupOrIFrameAsync(CancellationToken.None).Wait();
- return; // don't do any more processing on it now
- }
-
- // Only sniff for an OpenID response if it is targeted at this control.
- // Note that Stateless mode causes no receiver to be indicated, and
- // we want to handle that, but only if there isn't a parent control that
- // will be handling that.
- string receiver = this.Page.Request.QueryString[ReturnToReceivingControlId]
- ?? this.Page.Request.Form[ReturnToReceivingControlId];
- if (receiver == this.ClientID || (receiver == null && !this.IsEmbeddedInParentOpenIdControl)) {
- this.Page.RegisterAsyncTask(new PageAsyncTask(
- async ct => {
- var response =
- await this.RelyingParty.GetResponseAsync(new HttpRequestWrapper(this.Context.Request), ct);
- Logger.Controls.DebugFormat(
- "The {0} control checked for an authentication response and found: {1}",
- this.ID,
- response != null ? response.Status.ToString() : "nothing");
- this.ProcessResponse(response);
- }));
+ this.Page.RegisterAsyncTask(new PageAsyncTask(async ct => {
+ await this.ScriptClosingPopupOrIFrameAsync(ct);
+ }));
+ } else {
+ // Only sniff for an OpenID response if it is targeted at this control.
+ // Note that Stateless mode causes no receiver to be indicated, and
+ // we want to handle that, but only if there isn't a parent control that
+ // will be handling that.
+ string receiver = this.Page.Request.QueryString[ReturnToReceivingControlId]
+ ?? this.Page.Request.Form[ReturnToReceivingControlId];
+ if (receiver == this.ClientID || (receiver == null && !this.IsEmbeddedInParentOpenIdControl)) {
+ this.Page.RegisterAsyncTask(
+ new PageAsyncTask(
+ async ct => {
+ var response = await this.RelyingParty.GetResponseAsync(new HttpRequestWrapper(this.Context.Request), ct);
+ Logger.Controls.DebugFormat(
+ "The {0} control checked for an authentication response and found: {1}",
+ this.ID,
+ response != null ? response.Status.ToString() : "nothing");
+ this.ProcessResponse(response);
+ }));
+ }
}
}
diff --git a/src/DotNetOpenAuth.OpenId.RelyingParty.UI/OpenId/RelyingParty/OpenIdSelector.cs b/src/DotNetOpenAuth.OpenId.RelyingParty.UI/OpenId/RelyingParty/OpenIdSelector.cs
index a1c4510..47984b4 100644
--- a/src/DotNetOpenAuth.OpenId.RelyingParty.UI/OpenId/RelyingParty/OpenIdSelector.cs
+++ b/src/DotNetOpenAuth.OpenId.RelyingParty.UI/OpenId/RelyingParty/OpenIdSelector.cs
@@ -318,9 +318,11 @@ namespace DotNetOpenAuth.OpenId.RelyingParty {
this.positiveAssertionField.ClientID);
this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Postback", script, true);
- this.PreloadDiscoveryAsync(
- this.Buttons.OfType<SelectorProviderButton>().Select(op => op.OPIdentifier).Where(id => id != null),
- CancellationToken.None).Wait();
+ this.Page.RegisterAsyncTask(new PageAsyncTask(async ct => {
+ await this.PreloadDiscoveryAsync(
+ this.Buttons.OfType<SelectorProviderButton>().Select(op => op.OPIdentifier).Where(id => id != null),
+ ct);
+ }));
this.textBox.Visible = this.OpenIdTextBoxVisible;
}