NSURLSession rewrite (#422)

* clang-format: Do not use tabs

* Ignore clangd cache and compile_commands

* NSBlockOperation: Fix memory leak

* NSHTTPCookie: Fix expires date parsing

* NSHTTPCookie: Release DateFormatter after use

* NSOperation: Remove all objects at end of execution

* Reimplementation of NSURLSession

* NSURLSession: Update expiration dates in test

* Update ChangeLog

* Fix trivial compiler warning caused by missing import

* Import GSDispatch.h for definition of DISPATCH_QUEUE_SERIAL

* Import common.h early to avoid header conflict

* Fix import order to avoid conflicts and ensure we have correct localisation macro

* Check for presence of dispatch_cancel

* Cancel timer using dispatch_source_cancel() if dispatch_cancel() is missing.

* NSURLSession: Replace dispatch_io with dispatch_source in unit test HTTP server

---------

Co-authored-by: hmelder <service@hugomelder.com>
This commit is contained in:
rfm 2024-08-16 13:08:41 +01:00 committed by GitHub
parent 9b92c2d593
commit ed4e305026
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
53 changed files with 5410 additions and 7178 deletions

View file

@ -39,6 +39,7 @@ typedef struct {
NSMutableDictionary *headers;
BOOL shouldHandleCookies;
BOOL debug;
BOOL assumesHTTP3Capable;
id<GSLogDelegate> ioDelegate;
NSURL *URL;
NSURL *mainDocumentURL;
@ -56,6 +57,9 @@ typedef struct {
@interface _GSMutableInsensitiveDictionary : NSMutableDictionary
@end
@interface _GSInsensitiveDictionary : NSMutableDictionary
@end
@implementation NSURLRequest
+ (id) allocWithZone: (NSZone*)z
@ -116,6 +120,7 @@ typedef struct {
ASSIGN(inst->bodyStream, this->bodyStream);
ASSIGN(inst->method, this->method);
inst->shouldHandleCookies = this->shouldHandleCookies;
inst->assumesHTTP3Capable = this->assumesHTTP3Capable;
inst->debug = this->debug;
inst->ioDelegate = this->ioDelegate;
inst->headers = [this->headers mutableCopy];
@ -375,6 +380,11 @@ typedef struct {
return [this->headers objectForKey: field];
}
- (BOOL) assumesHTTP3Capable
{
return this->assumesHTTP3Capable;
}
@end
@ -454,6 +464,11 @@ typedef struct {
}
}
- (void)setAssumesHTTP3Capable:(BOOL)capable
{
this->assumesHTTP3Capable = capable;
}
@end
@implementation NSURLRequest (Private)
@ -468,6 +483,11 @@ typedef struct {
return this->ioDelegate;
}
- (NSDictionary *) _insensitiveHeaders
{
return [this->headers copy];
}
- (id) _propertyForKey: (NSString*)key
{
return [this->properties objectForKey: key];