Skip to content

Commit e71516e

Browse files
committed
Add safe guards
1 parent 3815fe6 commit e71516e

1 file changed

Lines changed: 6 additions & 2 deletions

File tree

src/main/java/com/timgroup/statsd/UnixStreamClientChannel.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.io.IOException;
44
import java.net.SocketAddress;
5+
import java.net.StandardSocketOptions;
56
import java.nio.ByteBuffer;
67
import java.nio.ByteOrder;
78
import java.nio.channels.SelectionKey;
@@ -62,7 +63,7 @@ public synchronized int write(ByteBuffer src) throws IOException {
6263
delimiterBuffer.flip();
6364

6465
try {
65-
long deadline = System.nanoTime() + timeout * 1_000_000L;
66+
long deadline = timeout > 0 ? System.nanoTime() + timeout * 1_000_000L : 0;
6667
written = writeAll(delimiterBuffer, true, deadline);
6768
if (written > 0) {
6869
written += writeAll(src, false, deadline);
@@ -106,7 +107,7 @@ public int writeAll(ByteBuffer bb, boolean canReturnOnTimeout, long deadline)
106107
}
107108

108109
if (read == 0) {
109-
if (canReturnOnTimeout && written == 0) {
110+
if (canReturnOnTimeout && written == 0 && delegate.isBlocking()) {
110111
return written;
111112
}
112113

@@ -169,6 +170,9 @@ private void connect() throws IOException {
169170
: address;
170171

171172
try {
173+
if (bufferSize > 0) {
174+
channel.setOption(StandardSocketOptions.SO_SNDBUF, bufferSize);
175+
}
172176
if (connectionTimeout <= 0) {
173177
channel.configureBlocking(true);
174178
channel.connect(connectAddress);

0 commit comments

Comments
 (0)