int sock = ::socket (AF_INET, SOCK_DGRAM, 0);
if (sock < 0)
{
- char msg[100];
+ char msg[80];
char* strerr = strerror (errno);
- sprintf (msg, "DatagramSocketImpl.create: %.*s", 80, strerr);
+ sprintf (msg, "%.*s", 80, strerr);
JvThrow (new java::net::SocketException (JvNewStringUTF (msg)));
}
fnum = sock;
return;
}
error:
- char msg[100];
+ char msg[80];
char* strerr = strerror (errno);
- sprintf (msg, "DatagramSocketImpl.bind: %.*s", 80, strerr);
+ sprintf (msg, "%.*s", 80, strerr);
JvThrow (new java::net::BindException (JvNewStringUTF (msg)));
}
i->address = raddr;
return rport;
error:
- char msg[100];
+ char msg[80];
char* strerr = strerror (errno);
- sprintf (msg, "DatagramSocketImpl.peek: %.*s", 80, strerr);
+ sprintf (msg, "%.*s", 80, strerr);
JvThrow (new java::io::IOException (JvNewStringUTF (msg)));
}
if (::sendto (fnum, (char *) dbytes, p->getLength(), 0, ptr, len) >= 0)
return;
error:
- char msg[100];
+ char msg[80];
char* strerr = strerror (errno);
- sprintf (msg, "DatagramSocketImpl.send: %.*s", 80, strerr);
+ sprintf (msg, "%.*s", 80, strerr);
JvThrow (new java::io::IOException (JvNewStringUTF (msg)));
}
p->setLength ((jint) retlen);
return;
error:
- char msg[100];
+ char msg[80];
char* strerr = strerror (errno);
- sprintf (msg, "DatagramSocketImpl.receive: %.*s", 80, strerr);
+ sprintf (msg, "%.*s", 80, strerr);
JvThrow (new java::io::IOException (JvNewStringUTF (msg)));
}
if (::setsockopt (fnum, IPPROTO_IP, IP_MULTICAST_TTL, &val, val_len) == 0)
return;
- char msg[100];
+ char msg[80];
char* strerr = strerror (errno);
- sprintf (msg, "DatagramSocketImpl.setTimeToLive: %.*s", 80, strerr);
+ sprintf (msg, "%.*s", 80, strerr);
JvThrow (new java::io::IOException (JvNewStringUTF (msg)));
}
if (::getsockopt (fnum, IPPROTO_IP, IP_MULTICAST_TTL, &val, &val_len) == 0)
return ((int) val) & 0xFF;
- char msg[100];
+ char msg[80];
char* strerr = strerror (errno);
- sprintf (msg, "DatagramSocketImpl.getTimeToLive: %.*s", 80, strerr);
+ sprintf (msg, "%.*s", 80, strerr);
JvThrow (new java::io::IOException (JvNewStringUTF (msg)));
}
if (::setsockopt (fnum, level, opname, ptr, len) == 0)
return;
error:
- char msg[100];
+ char msg[80];
char* strerr = strerror (errno);
- sprintf (msg, "DatagramSocketImpl.%s: %.*s", join ? "join" : "leave", 80,
- strerr);
+ sprintf (msg, "%.*s", 80, strerr);
JvThrow (new java::io::IOException (JvNewStringUTF (msg)));
}
}
error:
- char msg[100];
+ char msg[80];
char* strerr = strerror (errno);
- sprintf (msg, "DatagramSocketImpl.setOption: %.*s", 80, strerr);
+ sprintf (msg, "%.*s", 80, strerr);
JvThrow (new java::net::SocketException (JvNewStringUTF (msg)));
}
}
error:
- char msg[100];
+ char msg[80];
char* strerr = strerror (errno);
- sprintf (msg, "DatagramSocketImpl.getOption: %.*s", 80, strerr);
+ sprintf (msg, "%.*s", 80, strerr);
JvThrow (new java::net::SocketException (JvNewStringUTF (msg)));
}
java::lang::Object *
java::net::PlainSocketImpl::getOption (jint)
{
- JvThrow (new SocketException (JvNewStringLatin1 ("SocketImpl.create: unimplemented")));
+ JvThrow (new SocketException (JvNewStringLatin1 ("SocketImpl.getOption: unimplemented")));
}
#else /* DISABLE_JAVA_NET */
jbyteArray haddress = host->address;
jbyte *bytes = elements (haddress);
int len = haddress->length;
+ int i = 1;
if (len == 4)
{
#endif
else
goto error;
+
+ // Enable SO_REUSEADDR, so that servers can reuse ports left in TIME_WAIT.
+ ::setsockopt(fnum, SOL_SOCKET, SO_REUSEADDR, &i, sizeof(i));
+
if (::bind (fnum, ptr, len) == 0)
{
address = host;
return;
}
error:
- char msg[100];
+ char msg[80];
char* strerr = strerror (errno);
- sprintf (msg, "SocketImpl.bind: %.*s", 80, strerr);
+ sprintf (msg, "%.*s", 80, strerr);
JvThrow (new java::net::BindException (JvNewStringUTF (msg)));
}
goto error;
return;
error:
- char msg[100];
+ char msg[80];
char* strerr = strerror (errno);
- sprintf (msg, "SocketImpl.connect: %.*s", 80, strerr);
+ sprintf (msg, "%.*s", 80, strerr);
JvThrow (new java::net::ConnectException (JvNewStringUTF (msg)));
}
{
if (::listen (fnum, backlog) != 0)
{
- char msg[100];
+ char msg[80];
char* strerr = strerror (errno);
- sprintf (msg, "SocketImpl.listen: %.*s", 80, strerr);
+ sprintf (msg, "%.*s", 80, strerr);
JvThrow (new java::io::IOException (JvNewStringUTF (msg)));
}
}
s->fd = new java::io::FileDescriptor (new_socket);
return;
error:
- char msg[100];
+ char msg[80];
char* strerr = strerror (errno);
- sprintf (msg, "SocketImpl.accept: %.*s", 80, strerr);
+ sprintf (msg, "%.*s", 80, strerr);
JvThrow (new java::io::IOException (JvNewStringUTF (msg)));
}
}
error:
- char msg[100];
+ char msg[80];
char* strerr = strerror (errno);
- sprintf (msg, "SocketImpl.setOption: %.*s", 80, strerr);
+ sprintf (msg, "%.*s", 80, strerr);
JvThrow (new java::net::SocketException (JvNewStringUTF (msg)));
}
}
error:
- char msg[100];
+ char msg[80];
char* strerr = strerror (errno);
- sprintf (msg, "SocketImpl.getOption: %.*s", 80, strerr);
+ sprintf (msg, "%.*s", 80, strerr);
JvThrow (new java::net::SocketException (JvNewStringUTF (msg)));
}