Thank you Roger for review!

On 9/25/17 11:47 AM, Roger Riggs wrote:
Hi Ivan,

Looks ok to me.

I don't see a reason to skimp on the additional size since it is allocated and then freed immediately.
The increment might as well be as big as the initial size.

Right. Let's use the same value of 15K, which reduces the number of variables to operate with.

I don't see a reason to retry if the buffer gets close to ULONG_MAX; I'd just break the for loop and let it fail. (but the new code is just doing what the old code did and retry even if the buffer did not increase).

If len is close to ULONG_MAX, it is still larger value of len returned by the previous call to GetAdaptersAddresses (otherwise we wouldn't have gotten ERROR_BUFFER_OVERFLOW.) So, if we're in the loop, there's no way the buffer will not increase (unless there's a failure due to OOM, of course.)

Also, please introduce a constant for the number of retries; it will make it clearer
and not need to hard code it in two places.
Done!

Would you please take a look at the updated webrev:

http://cr.openjdk.java.net/~igerasim/8187658/01/webrev/

With kind regards,
Ivan

(I would probably have coded the retry count counting down to zero but its the same effect).

Regards, Roger


On 9/25/2017 1:03 PM, Ivan Gerasimov wrote:
Ping.

Please review the proposed change at your convenience.

The fix will greatly reduce the possibility of a need to reallocate the buffer to retrieve the results (something that the documentation strongly suggests to avoid), and, if such reallocation still occurs to be necessary, will increase number of retries.

With kind regards,
Ivan


On 9/19/17 10:50 AM, Ivan Gerasimov wrote:
Hello!

When retrieving information about network interfaces on Windows we make up to 2 attempts to call GetAdaptersAddresses().

It was reported that in very rare cases it may not be sufficient, and even the second attempt can fail with ERROR_BUFFER_OVERFLOW.

I suggest that we follow the recommendation given in MSDN [1]: increase the initial buffer size to 15K and do up to 3 attempts to call GetAdaptersAddresses().

BUGURL: https://bugs.openjdk.java.net/browse/JDK-8187658
WEBREV: http://cr.openjdk.java.net/~igerasim/8187658/00/webrev/

Would you please help review the fix?

[1] https://msdn.microsoft.com/en-us/library/windows/desktop/aa365915(v=vs.85).aspx





--
With kind regards,
Ivan Gerasimov

Reply via email to