Skip to content

Commit 70b00ab

Browse files
authored
Merge pull request #159 from vapor/beta-1
beta 1
2 parents 063c356 + 8250a38 commit 70b00ab

File tree

6 files changed

+38
-19
lines changed

6 files changed

+38
-19
lines changed

Sources/TCP/Socket/TCPClient.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,8 @@ extension TCPSocket {
8888
// http://www.madore.org/~david/computers/connect-intr.html
8989
case EINPROGRESS:
9090
if !isNonBlocking {
91-
fatalError("EINPROGRESS on a blocking socket")
91+
ERROR("EINPROGRESS on a blocking socket")
92+
return
9293
}
9394
default: throw TCPError.posix(errno, identifier: "connect")
9495
}

Sources/TCP/Streams/TCPSocketSink.swift

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,13 @@ public final class TCPSocketSink: Async.InputStream {
6060
switch event {
6161
case .next(let input, let ready):
6262
guard inputBuffer == nil else {
63-
fatalError("SocketSink upstream is illegally overproducing input buffers.")
63+
ERROR("SocketSink upstream is illegally overproducing input buffers.")
64+
return
6465
}
6566
inputBuffer = input
6667
guard currentReadyPromise == nil else {
67-
fatalError("SocketSink currentReadyPromise illegally not nil during input.")
68+
ERROR("SocketSink currentReadyPromise illegally not nil during input.")
69+
return
6870
}
6971
currentReadyPromise = ready
7072
resumeIfSuspended()
@@ -81,7 +83,8 @@ public final class TCPSocketSink: Async.InputStream {
8183
return
8284
}
8385
guard let writeSource = self.writeSource else {
84-
fatalError("SocketSink writeSource illegally nil during close.")
86+
ERROR("SocketSink writeSource illegally nil during close.")
87+
return
8588
}
8689
writeSource.cancel()
8790
socket.close()
@@ -93,7 +96,8 @@ public final class TCPSocketSink: Async.InputStream {
9396
private func writeData(ready: Promise<Void>) {
9497
do {
9598
guard let buffer = self.inputBuffer else {
96-
fatalError("Unexpected nil SocketSink inputBuffer during writeData")
99+
ERROR("Unexpected nil SocketSink inputBuffer during writeData")
100+
return
97101
}
98102

99103
let write = try socket.write(from: buffer)
@@ -102,7 +106,7 @@ public final class TCPSocketSink: Async.InputStream {
102106
switch count {
103107
case buffer.count:
104108
self.inputBuffer = nil
105-
ready.complete()
109+
ready.complete(onNextTick: eventLoop)
106110
default:
107111
inputBuffer = ByteBuffer(
108112
start: buffer.baseAddress?.advanced(by: count),
@@ -113,13 +117,14 @@ public final class TCPSocketSink: Async.InputStream {
113117
case .wouldBlock:
114118
resumeIfSuspended()
115119
guard currentReadyPromise == nil else {
116-
fatalError("SocketSink currentReadyPromise illegally not nil during wouldBlock.")
120+
ERROR("SocketSink currentReadyPromise illegally not nil during wouldBlock.")
121+
return
117122
}
118123
currentReadyPromise = ready
119124
}
120125
} catch {
121126
self.error(error)
122-
ready.complete()
127+
ready.complete(onNextTick: eventLoop)
123128
}
124129
}
125130

@@ -136,7 +141,8 @@ public final class TCPSocketSink: Async.InputStream {
136141
excessSignalCount = excessSignalCount &+ 1
137142
if excessSignalCount >= maxExcessSignalCount {
138143
guard let writeSource = self.writeSource else {
139-
fatalError("SocketSink writeSource illegally nil during signal.")
144+
ERROR("SocketSink writeSource illegally nil during signal.")
145+
return
140146
}
141147
writeSource.suspend()
142148
sourceIsSuspended = true
@@ -145,7 +151,8 @@ public final class TCPSocketSink: Async.InputStream {
145151
}
146152

147153
guard let ready = currentReadyPromise else {
148-
fatalError("SocketSink currentReadyPromise illegaly nil during signal.")
154+
ERROR("SocketSink currentReadyPromise illegaly nil during signal.")
155+
return
149156
}
150157
currentReadyPromise = nil
151158
writeData(ready: ready)
@@ -157,7 +164,8 @@ public final class TCPSocketSink: Async.InputStream {
157164
}
158165

159166
guard let writeSource = self.writeSource else {
160-
fatalError("SocketSink writeSource illegally nil during resumeIfSuspended.")
167+
ERROR("SocketSink writeSource illegally nil during resumeIfSuspended.")
168+
return
161169
}
162170
sourceIsSuspended = false
163171
// start listening for ready notifications
@@ -177,7 +185,8 @@ extension TCPSocket {
177185
@available(*, deprecated)
178186
public func sink(on eventLoop: Worker) -> TCPSocketSink {
179187
return .init(socket: self, on: eventLoop) { _, error in
180-
fatalError("Uncaught error in TCPSocketSink: \(error).")
188+
ERROR("Uncaught error in TCPSocketSink: \(error).")
189+
return
181190
}
182191
}
183192
}

Sources/TCP/Streams/TCPSocketSource.swift

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,8 @@ public final class TCPSocketSource: Async.OutputStream {
6969
return
7070
}
7171
guard let readSource = self.readSource else {
72-
fatalError("SocketSource readSource illegally nil during close.")
72+
ERROR("SocketSource readSource illegally nil during close.")
73+
return
7374
}
7475
readSource.cancel()
7576
socket.close()
@@ -84,7 +85,8 @@ public final class TCPSocketSource: Async.OutputStream {
8485
/// as indicated by a read source.
8586
private func readData() {
8687
guard let downstream = self.downstream else {
87-
fatalError("Unexpected nil downstream on SocketSource during readData.")
88+
ERROR("Unexpected nil downstream on SocketSource during readData.")
89+
return
8890
}
8991
do {
9092
let read = try socket.read(into: buffer)
@@ -141,7 +143,8 @@ public final class TCPSocketSource: Async.OutputStream {
141143
excessSignalCount = excessSignalCount &+ 1
142144
if excessSignalCount >= maxExcessSignalCount {
143145
guard let readSource = self.readSource else {
144-
fatalError("SocketSource readSource illegally nil during signal.")
146+
ERROR("SocketSource readSource illegally nil during signal.")
147+
return
145148
}
146149
readSource.suspend()
147150
sourceIsSuspended = true
@@ -161,7 +164,8 @@ public final class TCPSocketSource: Async.OutputStream {
161164
}
162165

163166
guard let readSource = self.readSource else {
164-
fatalError("SocketSource readSource illegally nil on resumeIfSuspended.")
167+
ERROR("SocketSource readSource illegally nil on resumeIfSuspended.")
168+
return
165169
}
166170
sourceIsSuspended = false
167171
readSource.resume()

Sources/TCP/Streams/TCPSocketStream.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@ extension TCPSocket {
4242
@available(*, deprecated)
4343
public func stream(bufferSize: Int = 4096, on worker: Worker) -> TCPSocketStream {
4444
return TCPSocketStream(socket: self, bufferSize: bufferSize, on: worker) { _, error in
45-
fatalError("Uncaught error in TCPSocketStream: \(error).")
45+
ERROR("Uncaught error in TCPSocketStream: \(error).")
46+
return
4647
}
4748
}
4849
}

Sources/TCP/Utilties/TCPError.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,4 +62,6 @@ public struct TCPError: Traceable, Debuggable, Helpable, Swift.Error, Encodable
6262
}
6363
}
6464

65-
65+
func ERROR(_ message: String, file: StaticString = #file, line: Int = #line) {
66+
print("[TCP] \(message) [\(file):\(line)]")
67+
}

Sources/TCP/Utilties/TCPSocket+Data.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ extension TCPSocket {
2121

2222
switch read {
2323
case .success(let count): data.removeLast(data.count &- count)
24-
case .wouldBlock: fatalError()
24+
case .wouldBlock:
25+
ERROR("TCPSocket blocked during read Data.")
26+
return data
2527
}
2628

2729
return data

0 commit comments

Comments
 (0)