@@ -21,7 +21,7 @@ namespace RestSharp;
21
21
public partial class RestClient {
22
22
/// <inheritdoc />
23
23
public async Task < RestResponse > ExecuteAsync ( RestRequest request , CancellationToken cancellationToken = default ) {
24
- var internalResponse = await ExecuteRequestAsync ( request , cancellationToken ) . ConfigureAwait ( false ) ;
24
+ using var internalResponse = await ExecuteRequestAsync ( request , cancellationToken ) . ConfigureAwait ( false ) ;
25
25
26
26
var response = internalResponse . Exception == null
27
27
? await RestResponse . FromHttpResponse (
@@ -85,7 +85,8 @@ async Task<HttpResponse> ExecuteRequestAsync(RestRequest request, CancellationTo
85
85
86
86
var httpMethod = AsHttpMethod ( request . Method ) ;
87
87
var url = this . BuildUri ( request ) ;
88
- var message = new HttpRequestMessage ( httpMethod , url ) { Content = requestContent . BuildContent ( ) } ;
88
+
89
+ using var message = new HttpRequestMessage ( httpMethod , url ) { Content = requestContent . BuildContent ( ) } ;
89
90
message . Headers . Host = Options . BaseHost ;
90
91
message . Headers . CacheControl = request . CachePolicy ?? Options . CachePolicy ;
91
92
@@ -102,11 +103,8 @@ async Task<HttpResponse> ExecuteRequestAsync(RestRequest request, CancellationTo
102
103
. AddHeaders ( request . Parameters )
103
104
. AddHeaders ( DefaultParameters )
104
105
. AddAcceptHeader ( AcceptedContentTypes )
105
- . AddCookieHeaders ( cookieContainer , url ) ;
106
-
107
- if ( Options . CookieContainer != null ) {
108
- headers . AddCookieHeaders ( Options . CookieContainer , url ) ;
109
- }
106
+ . AddCookieHeaders ( url , cookieContainer )
107
+ . AddCookieHeaders ( url , Options . CookieContainer ) ;
110
108
111
109
message . AddHeaders ( headers ) ;
112
110
@@ -116,14 +114,10 @@ async Task<HttpResponse> ExecuteRequestAsync(RestRequest request, CancellationTo
116
114
117
115
// Parse all the cookies from the response and update the cookie jar with cookies
118
116
if ( responseMessage . Headers . TryGetValues ( KnownHeaders . SetCookie , out var cookiesHeader ) ) {
119
- foreach ( var header in cookiesHeader ) {
120
- try {
121
- cookieContainer . SetCookies ( url , header ) ;
122
- }
123
- catch ( CookieException ) {
124
- // Do not fail request if we cannot parse a cookie
125
- }
126
- }
117
+ // ReSharper disable once PossibleMultipleEnumeration
118
+ cookieContainer . AddCookies ( url , cookiesHeader ) ;
119
+ // ReSharper disable once PossibleMultipleEnumeration
120
+ Options . CookieContainer ? . AddCookies ( url , cookiesHeader ) ;
127
121
}
128
122
129
123
if ( request . OnAfterRequest != null ) await request . OnAfterRequest ( responseMessage ) . ConfigureAwait ( false ) ;
@@ -141,7 +135,9 @@ record HttpResponse(
141
135
CookieContainer ? CookieContainer ,
142
136
Exception ? Exception ,
143
137
CancellationToken TimeoutToken
144
- ) ;
138
+ ) : IDisposable {
139
+ public void Dispose ( ) => ResponseMessage ? . Dispose ( ) ;
140
+ }
145
141
146
142
static HttpMethod AsHttpMethod ( Method method )
147
143
=> method switch {
0 commit comments