passpoint-r2: make the redirect server socket closable

There was a warning that server socket is not closed in the logcat
message during boot time.
It is because the server socket created to get available port was not
closed actually.

Solution:
1) Creates server socket with new available port whenever OSU provisioning
is started.
2) Keeps the server socket binding until new server socket is created in
NanoHTTPd and close it before new socket is created.

Error log:
A resource was acquired at attached stack trace but never released.
See java.io.Closeable for information on avoiding resource leaks.
java.lang.Throwable: Explicit termination method 'close' not called
at dalvik.system.CloseGuard.open(CloseGuard.java:237)
at java.net.AbstractPlainSocketImpl.create(AbstractPlainSocketImpl.java:137)
at java.net.ServerSocket.createImpl(ServerSocket.java:306)
at java.net.ServerSocket.getImpl(ServerSocket.java:259)
at java.net.ServerSocket.bind(ServerSocket.java:377)
at java.net.ServerSocket.<init>(ServerSocket.java:237)
at com.android.server.wifi.hotspot2.soap.RedirectListener.createInstance
(RedirectListener.java:103)
at com.android.server.wifi.hotspot2.PasspointProvisioner.lambda$init$0i
(PasspointProvisioner.java:115)
at com.android.server.wifi.hotspot2.-$$Lambda$PasspointProvisioner$i
8fmJnU9XPoTzX8nPAlmJHjKftJw.run(Unknown Source:4)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:209)
android.os.HandlerThread.run(HandlerThread.java:65)

Bug: 126118143
Test: Tested with R2 AP for provisioining flow.
Test: ./frameworks/opt/net/wifi/tests/wifitests/runtests.sh

Change-Id: Icf7902f09d605b757e44572f269f25cae9ffb054
Signed-off-by: Ecco Park <eccopark@google.com>
4 files changed