summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Wielaard <mark@klomp.org>2002-12-02 00:28:09 +0000
committerMark Wielaard <mark@klomp.org>2002-12-02 00:28:09 +0000
commitf4d36391edcbbcb3ddb2e9d65102c1c2584677f6 (patch)
tree5393b10728e80e926ee75661947a7376f9560cba
parent730c19d7f9ae6bee0035613e9983557109b7e9d1 (diff)
downloadclasspath-f4d36391edcbbcb3ddb2e9d65102c1c2584677f6.tar.gz
2002-12-01 Mark Wielaard <mark@klomp.org>
* native/jni/java-net/java_net_InetAddress.c (getHostByName): JCL_ThrowException takes hostname, not host. * native/jni/java-net/javanet.c (_javanet_set_remhost_addr): New method. (_javanet_set_remhost): Use new method. (_javanet_connect): Likewise. * java/net/InetAddress.java (toString): Include hostname or alias if known, but don't lookup. * java/net/Socket.java (setSocketImplFactory): Throw SocketException when fac == null. 2002-12-01 Julian Dolby <dolby@us.ibm.com> * native/jni/java-net/java_net_PlainSocketImpl.c (available): Implement.
-rw-r--r--ChangeLog18
-rw-r--r--java/net/InetAddress.java13
-rw-r--r--java/net/Socket.java3
-rw-r--r--native/jni/java-net/java_net_InetAddress.c4
-rw-r--r--native/jni/java-net/java_net_PlainSocketImpl.c43
-rw-r--r--native/jni/java-net/javanet.c21
6 files changed, 91 insertions, 11 deletions
diff --git a/ChangeLog b/ChangeLog
index 2f54343a7..70b2644df 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,21 @@
+2002-12-01 Mark Wielaard <mark@klomp.org>
+
+ * native/jni/java-net/java_net_InetAddress.c (getHostByName):
+ JCL_ThrowException takes hostname, not host.
+ * native/jni/java-net/javanet.c (_javanet_set_remhost_addr): New
+ method.
+ (_javanet_set_remhost): Use new method.
+ (_javanet_connect): Likewise.
+ * java/net/InetAddress.java (toString): Include hostname or alias if
+ known, but don't lookup.
+ * java/net/Socket.java (setSocketImplFactory): Throw SocketException
+ when fac == null.
+
+2002-12-01 Julian Dolby <dolby@us.ibm.com>
+
+ * native/jni/java-net/java_net_PlainSocketImpl.c (available):
+ Implement.
+
2002-12-01 Tom Tromey <tromey@redhat.com>
Bug compatibility:
diff --git a/java/net/InetAddress.java b/java/net/InetAddress.java
index 4e371e4a1..51192d2ba 100644
--- a/java/net/InetAddress.java
+++ b/java/net/InetAddress.java
@@ -1,5 +1,5 @@
/* InetAddress.java -- Class to model an Internet address
- Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -640,7 +640,16 @@ isMulticastAddress()
public String
toString()
{
- return(getHostAddress());
+ StringBuffer sb;
+ if (hostName != null)
+ sb = new StringBuffer(hostName).append('/');
+ else if (hostname_alias != null)
+ sb = new StringBuffer(hostname_alias).append('/');
+ else
+ sb = new StringBuffer();
+
+ sb.append(getHostAddress());
+ return(sb.toString());
}
/**
diff --git a/java/net/Socket.java b/java/net/Socket.java
index e6cd8fa82..09835d695 100644
--- a/java/net/Socket.java
+++ b/java/net/Socket.java
@@ -892,6 +892,9 @@ public class Socket
if (sm != null)
sm.checkSetFactory();
+ if (fac == null)
+ throw new SocketException("SocketImplFactory cannot be null");
+
factory = fac;
}
diff --git a/native/jni/java-net/java_net_InetAddress.c b/native/jni/java-net/java_net_InetAddress.c
index 4fd1d5903..da8d53e24 100644
--- a/native/jni/java-net/java_net_InetAddress.c
+++ b/native/jni/java-net/java_net_InetAddress.c
@@ -1,5 +1,5 @@
/* InetAddress.c - Native methods for InetAddress class
- Copyright (C) 1998 Free Software Foundation, Inc.
+ Copyright (C) 1998, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -178,7 +178,7 @@ Java_java_net_InetAddress_getHostByName(JNIEnv *env, jclass class, jstring host)
hp = gethostbyname(hostname);
if (!hp)
{
- JCL_ThrowException(env, UNKNOWN_HOST_EXCEPTION, host);
+ JCL_ThrowException(env, UNKNOWN_HOST_EXCEPTION, hostname);
return (jobjectArray)NULL;
}
(*env)->ReleaseStringUTFChars(env, host, hostname);
diff --git a/native/jni/java-net/java_net_PlainSocketImpl.c b/native/jni/java-net/java_net_PlainSocketImpl.c
index 539ce4835..9aa2f58f2 100644
--- a/native/jni/java-net/java_net_PlainSocketImpl.c
+++ b/native/jni/java-net/java_net_PlainSocketImpl.c
@@ -1,5 +1,5 @@
/* PlainSocketImpl.c - Native methods for PlainSocketImpl class
- Copyright (C) 1998 Free Software Foundation, Inc.
+ Copyright (C) 1998, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -36,7 +36,13 @@ obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
+#include <errno.h>
+#include <sys/ioctl.h>
+#include <asm/ioctls.h>
+#include <string.h>
+
#include <jni.h>
+#include <jcl.h>
#include "java_net_PlainSocketImpl.h"
@@ -124,6 +130,41 @@ Java_java_net_PlainSocketImpl_accept(JNIEnv *env, jobject this, jobject impl)
/*************************************************************************/
+JNIEXPORT jint JNICALL
+Java_java_net_PlainSocketImpl_available(JNIEnv *env, jobject this)
+{
+ int fd;
+ int count = 0;
+ jclass cls;
+ jfieldID fid;
+
+ cls = (*env)->GetObjectClass(env, this);
+ if (cls == 0)
+ {
+ JCL_ThrowException(env, IO_EXCEPTION, "internal error");
+ return 0;
+ }
+
+ fid = (*env)->GetFieldID(env, cls, "native_fd", "I");
+ if (fid == 0)
+ {
+ JCL_ThrowException(env, IO_EXCEPTION, "internal error");
+ return 0;
+ }
+
+ fd = (*env)->GetIntField(env, this, fid);
+
+ if (ioctl(fd, FIONREAD, &count) == -1)
+ {
+ JCL_ThrowException(env, IO_EXCEPTION, strerror(errno));
+ return 0;
+ }
+ else
+ return count;
+}
+
+/*************************************************************************/
+
/*
* This method sets the specified option for a socket
*/
diff --git a/native/jni/java-net/javanet.c b/native/jni/java-net/javanet.c
index 902c0dbdb..bf9ca957b 100644
--- a/native/jni/java-net/javanet.c
+++ b/native/jni/java-net/javanet.c
@@ -1,5 +1,5 @@
/* javanet.c - Common internal functions for the java.net package
- Copyright (C) 1998 Free Software Foundation, Inc.
+ Copyright (C) 1998, 2002 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -272,6 +272,8 @@ _javanet_create_inetaddress(JNIEnv *env, int netaddr)
/*************************************************************************/
+static void _javanet_set_remhost_addr(JNIEnv*, jobject, jobject);
+
/*
* Set's the value of the "addr" field in PlainSocketImpl with a new
* InetAddress for the specified addr
@@ -279,8 +281,6 @@ _javanet_create_inetaddress(JNIEnv *env, int netaddr)
static void
_javanet_set_remhost(JNIEnv *env, jobject this, int netaddr)
{
- jclass this_cls;
- jfieldID fid;
jobject ia;
DBG("_javanet_set_remhost(): Entered _javanet_set_remhost\n");
@@ -290,6 +290,15 @@ _javanet_set_remhost(JNIEnv *env, jobject this, int netaddr)
if (ia == NULL)
return;
+ _javanet_set_remhost_addr(env, this, ia);
+}
+
+static void
+_javanet_set_remhost_addr(JNIEnv *env, jobject this, jobject ia)
+{
+ jclass this_cls;
+ jfieldID fid;
+
/* Set the variable in the object */
this_cls = (*env)->FindClass(env, "java/net/SocketImpl");
if (this_cls == NULL)
@@ -299,10 +308,10 @@ _javanet_set_remhost(JNIEnv *env, jobject this, int netaddr)
if (fid == NULL)
return;
- DBG("_javanet_set_remhost(): Found address field\n");
+ DBG("_javanet_set_remhost_addr(): Found address field\n");
(*env)->SetObjectField(env, this, fid, ia);
- DBG("_javanet_set_remhost(): Set field\n");
+ DBG("_javanet_set_remhost_addr(): Set field\n");
}
/*************************************************************************/
@@ -496,7 +505,7 @@ _javanet_connect(JNIEnv *env, jobject this, jobject addr, jint port)
return;
}
- _javanet_set_remhost(env, this, ntohl(si.sin_addr.s_addr));
+ _javanet_set_remhost_addr(env, this, addr);
if ((*env)->ExceptionOccurred(env))
{
close(fd);