Skip to content

Commit 68c698f

Browse files
committed
Merge branch 'develop' into feature/websockets-1
2 parents 84c7845 + de3800e commit 68c698f

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

Sources/http/Agent/Foundation/URLSessionClientRequest.swift

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,20 @@ public final class URLSessionClientRequest: ClientRequest {
4040
var writtenContent = Buffer()
4141

4242
var response : IncomingMessage?
43-
43+
44+
private var didRetain = false
45+
4446
init(agent: URLSessionAgent, request: URLRequest, eventLoop: EventLoop) {
4547
self.agent = agent
4648
self.request = request
4749
self.eventLoop = eventLoop
4850

4951
super.init(unsafeChannel: nil, log: agent.options.logger)
5052
}
51-
53+
deinit {
54+
if didRetain { core.release(); didRetain = false }
55+
}
56+
5257
private var selfRef : AnyObject?
5358

5459
private func setupResponse(with httpResponse: HTTPURLResponse?)
@@ -101,7 +106,9 @@ public final class URLSessionClientRequest: ClientRequest {
101106
response.push(Buffer(data))
102107
}
103108
response.push(nil) // EOF
109+
104110
self.selfRef = nil
111+
if self.didRetain { self.didRetain = false; self.core.release() }
105112
}
106113
}
107114

@@ -111,6 +118,7 @@ public final class URLSessionClientRequest: ClientRequest {
111118
return
112119
}
113120

121+
if !didRetain { didRetain = true; core.retain() }
114122
selfRef = self
115123
task.resume()
116124
}

0 commit comments

Comments
 (0)