File tree Expand file tree Collapse file tree 1 file changed +10
-2
lines changed
Sources/http/Agent/Foundation Expand file tree Collapse file tree 1 file changed +10
-2
lines changed Original file line number Diff line number Diff 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 }
You can’t perform that action at this time.
0 commit comments