提交 6193af7a 编写于 作者: R robm

8143397: It looks like InetAddress.isReachable(timeout) works incorrectly

Reviewed-by: xuelei, msheppar
上级 9b650b33
...@@ -480,6 +480,7 @@ ping4(JNIEnv *env, ...@@ -480,6 +480,7 @@ ping4(JNIEnv *env,
char SendData[32] = {0}; char SendData[32] = {0};
LPVOID ReplyBuffer = NULL; LPVOID ReplyBuffer = NULL;
DWORD ReplySize = 0; DWORD ReplySize = 0;
jboolean ret = JNI_FALSE;
hIcmpFile = IcmpCreateFile(); hIcmpFile = IcmpCreateFile();
if (hIcmpFile == INVALID_HANDLE_VALUE) { if (hIcmpFile == INVALID_HANDLE_VALUE) {
...@@ -503,7 +504,11 @@ ping4(JNIEnv *env, ...@@ -503,7 +504,11 @@ ping4(JNIEnv *env,
NULL, // PIP_OPTION_INFORMATION RequestOptions, NULL, // PIP_OPTION_INFORMATION RequestOptions,
ReplyBuffer,// LPVOID ReplyBuffer, ReplyBuffer,// LPVOID ReplyBuffer,
ReplySize, // DWORD ReplySize, ReplySize, // DWORD ReplySize,
timeout); // DWORD Timeout // Note: IcmpSendEcho and its derivatives
// seem to have an undocumented minimum
// timeout of 1000ms below which the
// api behaves inconsistently.
(timeout < 1000) ? 1000 : timeout); // DWORD Timeout
} else { } else {
dwRetVal = IcmpSendEcho2Ex(hIcmpFile, // HANDLE IcmpHandle, dwRetVal = IcmpSendEcho2Ex(hIcmpFile, // HANDLE IcmpHandle,
NULL, // HANDLE Event NULL, // HANDLE Event
...@@ -516,17 +521,19 @@ ping4(JNIEnv *env, ...@@ -516,17 +521,19 @@ ping4(JNIEnv *env,
NULL, // PIP_OPTION_INFORMATION RequestOptions, NULL, // PIP_OPTION_INFORMATION RequestOptions,
ReplyBuffer,// LPVOID ReplyBuffer, ReplyBuffer,// LPVOID ReplyBuffer,
ReplySize, // DWORD ReplySize, ReplySize, // DWORD ReplySize,
timeout); // DWORD Timeout (timeout < 1000) ? 1000 : timeout); // DWORD Timeout
}
if (dwRetVal != 0) {
PICMP_ECHO_REPLY pEchoReply = (PICMP_ECHO_REPLY)ReplyBuffer;
if ((int)pEchoReply->RoundTripTime <= timeout)
ret = JNI_TRUE;
} }
free(ReplyBuffer); free(ReplyBuffer);
IcmpCloseHandle(hIcmpFile); IcmpCloseHandle(hIcmpFile);
if (dwRetVal != 0) { return ret;
return JNI_TRUE;
} else {
return JNI_FALSE;
}
} }
/* /*
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册