Skip to content

Commit ce9740b

Browse files
committed
Allow ignoring cookie exception
1 parent 603cb85 commit ce9740b

File tree

2 files changed

+18
-6
lines changed

2 files changed

+18
-6
lines changed

src/RestSharp/Options/RestClientOptions.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,4 +223,9 @@ public RestClientOptions(string baseUrl) : this(new Uri(Ensure.NotEmptyString(ba
223223
/// Custom function to encode a string for use in a URL query.
224224
/// </summary>
225225
public Func<string, Encoding, string> EncodeQuery { get; set; } = (s, encoding) => s.UrlEncode(encoding)!;
226+
227+
/// <summary>
228+
/// Set to <code>true</code> to ignore invalid cookies returned by the remote server. Default is <code>false</code>.
229+
/// </summary>
230+
public bool IgnoreInvalidCookies { get; set; }
226231
}

src/RestSharp/RestClient.Async.cs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414

1515
using RestSharp.Extensions;
1616

17+
// ReSharper disable PossiblyMistakenUseOfCancellationToken
18+
1719
namespace RestSharp;
1820

1921
public partial class RestClient {
@@ -145,21 +147,26 @@ async Task<HttpResponse> ExecuteRequestAsync(RestRequest request, CancellationTo
145147

146148
// Parse all the cookies from the response and update the cookie jar with cookies
147149
if (responseMessage.Headers.TryGetValues(KnownHeaders.SetCookie, out var cookiesHeader)) {
148-
// ReSharper disable once PossibleMultipleEnumeration
149-
cookieContainer.AddCookies(url, cookiesHeader);
150-
// ReSharper disable once PossibleMultipleEnumeration
151-
Options.CookieContainer?.AddCookies(url, cookiesHeader);
150+
try {
151+
// ReSharper disable once PossibleMultipleEnumeration
152+
cookieContainer.AddCookies(url, cookiesHeader);
153+
// ReSharper disable once PossibleMultipleEnumeration
154+
Options.CookieContainer?.AddCookies(url, cookiesHeader);
155+
}
156+
catch (CookieException) when (!Options.IgnoreInvalidCookies) {
157+
throw;
158+
}
152159
}
153160
}
154161
catch (Exception ex) {
155-
return new HttpResponse(null, url, null, ex, timeoutCts.Token);
162+
return new(null, url, null, ex, timeoutCts.Token);
156163
}
157164

158165
#pragma warning disable CS0618 // Type or member is obsolete
159166
if (request.OnAfterRequest != null) await request.OnAfterRequest(responseMessage).ConfigureAwait(false);
160167
#pragma warning restore CS0618 // Type or member is obsolete
161168
await OnAfterHttpRequest(request, responseMessage, cancellationToken).ConfigureAwait(false);
162-
return new HttpResponse(responseMessage, url, cookieContainer, null, timeoutCts.Token);
169+
return new(responseMessage, url, cookieContainer, null, timeoutCts.Token);
163170
}
164171

165172
static async ValueTask OnBeforeRequest(RestRequest request, CancellationToken cancellationToken) {

0 commit comments

Comments
 (0)