diff --git a/junixsocket-common/src/main/java/org/newsclub/net/unix/AFDatagramSocketImpl.java b/junixsocket-common/src/main/java/org/newsclub/net/unix/AFDatagramSocketImpl.java index 46fb4d2df..0af8ed1aa 100644 --- a/junixsocket-common/src/main/java/org/newsclub/net/unix/AFDatagramSocketImpl.java +++ b/junixsocket-common/src/main/java/org/newsclub/net/unix/AFDatagramSocketImpl.java @@ -207,6 +207,7 @@ protected final void send(DatagramPacket p) throws IOException { sendToBuf = AFSocketAddress.SOCKETADDRESS_BUFFER_TL.get(); sendToBufLen = NativeUnixSocket.bytesToSockAddr(getAddressFamily().getDomain(), sendToBuf, addrBytes); + sendToBuf.position(0); if (sendToBufLen == -1) { throw new SocketException("Unsupported domain"); } @@ -219,6 +220,8 @@ protected final void send(DatagramPacket p) throws IOException { ByteBuffer datagramPacketBuffer = core.getThreadLocalDirectByteBuffer(len); datagramPacketBuffer.clear(); datagramPacketBuffer.put(p.getData(), p.getOffset(), p.getLength()); + datagramPacketBuffer.flip(); + NativeUnixSocket.send(fdesc, datagramPacketBuffer, 0, len, sendToBuf, sendToBufLen, /* NativeUnixSocket.OPT_NON_BLOCKING | */ NativeUnixSocket.OPT_DGRAM_MODE, ancillaryDataSupport);