+2003-11-22 Michael Koch <konqueror@gmx.de>
+
+ * gnu/java/net/natPlainDatagramSocketImplPosix.cc
+ (peekData): Use offset and maximal free space in datagram packet.
+ (receive): Likewise.
+ (send): Use offset in datagram packet.
+
2003-11-22 Michael Koch <konqueror@gmx.de>
* gnu/java/nio/DatagramChannelImpl.java
// FIXME: Deal with Multicast and if the socket is connected.
union SockAddr u;
socklen_t addrlen = sizeof(u);
- jbyte *dbytes = elements (p->getData());
+ jbyte *dbytes = elements (p->getData()) + p->getOffset();
+ jint maxlen = p->getData()->length - p->getOffset();
ssize_t retlen = 0;
// Do timeouts via select since SO_RCVTIMEO is not always available.
}
retlen =
- ::recvfrom (native_fd, (char *) dbytes, p->getLength(), MSG_PEEK, (sockaddr*) &u,
+ ::recvfrom (native_fd, (char *) dbytes, maxlen, MSG_PEEK, (sockaddr*) &u,
&addrlen);
if (retlen < 0)
goto error;
jbyte *bytes = elements (haddress);
int len = haddress->length;
struct sockaddr *ptr = (struct sockaddr *) &u.address;
- jbyte *dbytes = elements (p->getData());
+ jbyte *dbytes = elements (p->getData()) + p->getOffset();
if (len == 4)
{
u.address.sin_family = AF_INET;
// FIXME: Deal with Multicast and if the socket is connected.
union SockAddr u;
socklen_t addrlen = sizeof(u);
- jbyte *dbytes = elements (p->getData());
+ jbyte *dbytes = elements (p->getData()) + p->getOffset();
+ jint maxlen = p->getData()->length - p->getOffset();
ssize_t retlen = 0;
// Do timeouts via select since SO_RCVTIMEO is not always available.
}
retlen =
- ::recvfrom (native_fd, (char *) dbytes, p->getLength(), 0, (sockaddr*) &u,
+ ::recvfrom (native_fd, (char *) dbytes, maxlen, 0, (sockaddr*) &u,
&addrlen);
if (retlen < 0)
goto error;