Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
1e42bb17
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
3
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
1e42bb17
编写于
7月 07, 2008
作者:
W
wetmore
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
b22b0061
6b1c7fff
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
64 addition
and
33 deletion
+64
-33
src/share/classes/java/net/Inet6Address.java
src/share/classes/java/net/Inet6Address.java
+36
-24
src/share/classes/sun/net/ftp/FtpClient.java
src/share/classes/sun/net/ftp/FtpClient.java
+7
-2
test/java/net/Inet6Address/serialize/Readme.txt
test/java/net/Inet6Address/serialize/Readme.txt
+6
-0
test/java/net/Inet6Address/serialize/Serialize.java
test/java/net/Inet6Address/serialize/Serialize.java
+15
-7
test/java/net/Inet6Address/serialize/serial-bge0.ser
test/java/net/Inet6Address/serialize/serial-bge0.ser
+0
-0
未找到文件。
src/share/classes/java/net/Inet6Address.java
浏览文件 @
1e42bb17
...
...
@@ -25,12 +25,9 @@
package
java.net
;
import
java.security.AccessController
;
import
java.io.ObjectInputStream
;
import
java.io.IOException
;
import
java.io.ObjectStreamException
;
import
java.io.InvalidObjectException
;
import
sun.security.action.*
;
import
java.util.Enumeration
;
/**
...
...
@@ -358,13 +355,13 @@ class Inet6Address extends InetAddress {
}
private
int
deriveNumericScope
(
NetworkInterface
ifc
)
throws
UnknownHostException
{
Enumeration
addresses
=
ifc
.
getInetAddresses
();
Enumeration
<
InetAddress
>
addresses
=
ifc
.
getInetAddresses
();
while
(
addresses
.
hasMoreElements
())
{
InetAddress
addr
ess
=
(
InetAddress
)
addresses
.
nextElement
();
if
(!(
addr
ess
instanceof
Inet6Address
))
{
InetAddress
addr
=
addresses
.
nextElement
();
if
(!(
addr
instanceof
Inet6Address
))
{
continue
;
}
Inet6Address
ia6_addr
=
(
Inet6Address
)
addr
ess
;
Inet6Address
ia6_addr
=
(
Inet6Address
)
addr
;
/* check if site or link local prefixes match */
if
(!
differentLocalAddressTypes
(
ia6_addr
)){
/* type not the same, so carry on searching */
...
...
@@ -377,22 +374,22 @@ class Inet6Address extends InetAddress {
}
private
int
deriveNumericScope
(
String
ifname
)
throws
UnknownHostException
{
Enumeration
en
;
Enumeration
<
NetworkInterface
>
en
;
try
{
en
=
NetworkInterface
.
getNetworkInterfaces
();
}
catch
(
SocketException
e
)
{
throw
new
UnknownHostException
(
"could not enumerate local network interfaces"
);
}
while
(
en
.
hasMoreElements
())
{
NetworkInterface
ifc
=
(
NetworkInterface
)
en
.
nextElement
();
NetworkInterface
ifc
=
en
.
nextElement
();
if
(
ifc
.
getName
().
equals
(
ifname
))
{
Enumeration
addresses
=
ifc
.
getInetAddresses
();
while
(
addresses
.
hasMoreElements
())
{
InetAddress
addr
ess
=
(
InetAddress
)
addresses
.
nextElement
();
if
(!(
addr
ess
instanceof
Inet6Address
))
{
InetAddress
addr
=
(
InetAddress
)
addresses
.
nextElement
();
if
(!(
addr
instanceof
Inet6Address
))
{
continue
;
}
Inet6Address
ia6_addr
=
(
Inet6Address
)
addr
ess
;
Inet6Address
ia6_addr
=
(
Inet6Address
)
addr
;
/* check if site or link local prefixes match */
if
(!
differentLocalAddressTypes
(
ia6_addr
)){
/* type not the same, so carry on searching */
...
...
@@ -420,21 +417,22 @@ class Inet6Address extends InetAddress {
if
(
ifname
!=
null
&&
!
""
.
equals
(
ifname
))
{
try
{
scope_ifname
=
NetworkInterface
.
getByName
(
ifname
);
try
{
scope_id
=
deriveNumericScope
(
scope_ifname
);
}
catch
(
UnknownHostException
e
)
{
// should not happen
assert
false
;
if
(
scope_ifname
==
null
)
{
/* the interface does not exist on this system, so we clear
* the scope information completely */
scope_id_set
=
false
;
scope_ifname_set
=
false
;
scope_id
=
0
;
}
else
{
try
{
scope_id
=
deriveNumericScope
(
scope_ifname
);
}
catch
(
UnknownHostException
e
)
{
// should not happen
assert
false
;
}
}
}
catch
(
SocketException
e
)
{}
if
(
scope_ifname
==
null
)
{
/* the interface does not exist on this system, so we clear
* the scope information completely */
scope_id_set
=
false
;
scope_ifname_set
=
false
;
scope_id
=
0
;
}
}
/* if ifname was not supplied, then the numeric info is used */
...
...
@@ -460,6 +458,7 @@ class Inet6Address extends InetAddress {
* an IP multicast address
* @since JDK1.1
*/
@Override
public
boolean
isMulticastAddress
()
{
return
((
ipaddress
[
0
]
&
0xff
)
==
0xff
);
}
...
...
@@ -470,6 +469,7 @@ class Inet6Address extends InetAddress {
* a wildcard address.
* @since 1.4
*/
@Override
public
boolean
isAnyLocalAddress
()
{
byte
test
=
0x00
;
for
(
int
i
=
0
;
i
<
INADDRSZ
;
i
++)
{
...
...
@@ -485,6 +485,7 @@ class Inet6Address extends InetAddress {
* a loopback address; or false otherwise.
* @since 1.4
*/
@Override
public
boolean
isLoopbackAddress
()
{
byte
test
=
0x00
;
for
(
int
i
=
0
;
i
<
15
;
i
++)
{
...
...
@@ -500,6 +501,7 @@ class Inet6Address extends InetAddress {
* a link local address; or false if address is not a link local unicast address.
* @since 1.4
*/
@Override
public
boolean
isLinkLocalAddress
()
{
return
((
ipaddress
[
0
]
&
0xff
)
==
0xfe
&&
(
ipaddress
[
1
]
&
0xc0
)
==
0x80
);
...
...
@@ -512,6 +514,7 @@ class Inet6Address extends InetAddress {
* a site local address; or false if address is not a site local unicast address.
* @since 1.4
*/
@Override
public
boolean
isSiteLocalAddress
()
{
return
((
ipaddress
[
0
]
&
0xff
)
==
0xfe
&&
(
ipaddress
[
1
]
&
0xc0
)
==
0xc0
);
...
...
@@ -525,6 +528,7 @@ class Inet6Address extends InetAddress {
* of global scope or it is not a multicast address
* @since 1.4
*/
@Override
public
boolean
isMCGlobal
()
{
return
((
ipaddress
[
0
]
&
0xff
)
==
0xff
&&
(
ipaddress
[
1
]
&
0x0f
)
==
0x0e
);
...
...
@@ -538,6 +542,7 @@ class Inet6Address extends InetAddress {
* of node-local scope or it is not a multicast address
* @since 1.4
*/
@Override
public
boolean
isMCNodeLocal
()
{
return
((
ipaddress
[
0
]
&
0xff
)
==
0xff
&&
(
ipaddress
[
1
]
&
0x0f
)
==
0x01
);
...
...
@@ -551,6 +556,7 @@ class Inet6Address extends InetAddress {
* of link-local scope or it is not a multicast address
* @since 1.4
*/
@Override
public
boolean
isMCLinkLocal
()
{
return
((
ipaddress
[
0
]
&
0xff
)
==
0xff
&&
(
ipaddress
[
1
]
&
0x0f
)
==
0x02
);
...
...
@@ -564,6 +570,7 @@ class Inet6Address extends InetAddress {
* of site-local scope or it is not a multicast address
* @since 1.4
*/
@Override
public
boolean
isMCSiteLocal
()
{
return
((
ipaddress
[
0
]
&
0xff
)
==
0xff
&&
(
ipaddress
[
1
]
&
0x0f
)
==
0x05
);
...
...
@@ -578,6 +585,7 @@ class Inet6Address extends InetAddress {
* or it is not a multicast address
* @since 1.4
*/
@Override
public
boolean
isMCOrgLocal
()
{
return
((
ipaddress
[
0
]
&
0xff
)
==
0xff
&&
(
ipaddress
[
1
]
&
0x0f
)
==
0x08
);
...
...
@@ -590,6 +598,7 @@ class Inet6Address extends InetAddress {
*
* @return the raw IP address of this object.
*/
@Override
public
byte
[]
getAddress
()
{
return
ipaddress
.
clone
();
}
...
...
@@ -624,6 +633,7 @@ class Inet6Address extends InetAddress {
*
* @return the raw IP address in a string format.
*/
@Override
public
String
getHostAddress
()
{
String
s
=
numericToTextFormat
(
ipaddress
);
if
(
scope_ifname_set
)
{
/* must check this first */
...
...
@@ -639,6 +649,7 @@ class Inet6Address extends InetAddress {
*
* @return a hash code value for this IP address.
*/
@Override
public
int
hashCode
()
{
if
(
ipaddress
!=
null
)
{
...
...
@@ -677,6 +688,7 @@ class Inet6Address extends InetAddress {
* <code>false</code> otherwise.
* @see java.net.InetAddress#getAddress()
*/
@Override
public
boolean
equals
(
Object
obj
)
{
if
(
obj
==
null
||
!(
obj
instanceof
Inet6Address
))
...
...
src/share/classes/sun/net/ftp/FtpClient.java
浏览文件 @
1e42bb17
...
...
@@ -352,6 +352,9 @@ public class FtpClient extends TransferProtocolClient {
s
=
new
Socket
(
Proxy
.
NO_PROXY
);
}
else
s
=
new
Socket
();
// Bind the socket to the same address as the control channel. This
// is needed in case of multi-homed systems.
s
.
bind
(
new
InetSocketAddress
(
serverSocket
.
getLocalAddress
(),
0
));
if
(
connectTimeout
>=
0
)
{
s
.
connect
(
dest
,
connectTimeout
);
}
else
{
...
...
@@ -417,8 +420,10 @@ public class FtpClient extends TransferProtocolClient {
// since we can't accept a connection through SOCKS (yet)
// throw an exception
throw
new
FtpProtocolException
(
"Passive mode failed"
);
}
else
portSocket
=
new
ServerSocket
(
0
,
1
);
}
// Bind the ServerSocket to the same address as the control channel
// This is needed for multi-homed systems
portSocket
=
new
ServerSocket
(
0
,
1
,
serverSocket
.
getLocalAddress
());
try
{
myAddress
=
portSocket
.
getInetAddress
();
if
(
myAddress
.
isAnyLocalAddress
())
...
...
test/java/net/Inet6Address/serialize/Readme.txt
0 → 100644
浏览文件 @
1e42bb17
This test uses 2 binary data files that were each created by serializing an Inet6Address instance.
In both cases this has to do with the tricky issue of scopes in serialized addresses.
serial1.4.2.ser: Was created by serializing an Inet6Address (::1) with J2SE 1.4.2 and is used to check for backward compatibility.
serial-bge0.ser: Was created on a Sparc workstation because it has an uncommon interface name ('bge0') which is useful for the test.
test/java/net/Inet6Address/serialize/Serialize.java
浏览文件 @
1e42bb17
...
...
@@ -24,7 +24,9 @@
/**
* @test
* @bug 4921029
* @bug 6656849
* @summary java.net.Inet6Address fails to be serialized with IPv6 support
* @summary NullPointerException thrown while de-serializing IPV6 Address.
*/
import
java.net.*
;
...
...
@@ -76,11 +78,20 @@ public class Serialize {
System
.
out
.
println
(
nobj
);
// create an address with an unlikely numeric scope_id
if
(!
test
((
Inet6Address
)
InetAddress
.
getByName
(
"fe80::1%99"
)))
{
throw
new
RuntimeException
(
"test failed on fe80::1%99"
);
}
// create an address with an unlikely numeric scope_id
if
(!
test
((
Inet6Address
)
InetAddress
.
getByName
(
"fe80::1%99"
)))
{
throw
new
RuntimeException
(
"test failed on fe80::1%99"
);
}
// Deserialize an Inet6 address with a named interface
file
=
new
File
(
System
.
getProperty
(
"test.src"
),
"serial-bge0.ser"
);
ois
=
new
ObjectInputStream
(
new
FileInputStream
(
file
));
try
{
nobj
=
(
Inet6Address
)
ois
.
readObject
();
}
catch
(
NullPointerException
e
)
{
throw
new
RuntimeException
(
"6656849 Not fixed: NullPointer when deserializing"
);
}
System
.
out
.
println
(
nobj
);
System
.
out
.
println
(
"All tests passed"
);
}
...
...
@@ -97,8 +108,5 @@ public class Serialize {
}
else
{
return
false
;
}
}
}
test/java/net/Inet6Address/serialize/serial-bge0.ser
0 → 100644
浏览文件 @
1e42bb17
文件已添加
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录