@@ -2705,13 +2705,15 @@ private SocketFactory getSocketFactory() throws IOException {
27052705 */
27062706 private InetSocketAddress getInetAddressByIPPreference (String hostName ,
27072707 int portNumber ) throws IOException , SQLServerException {
2708- InetSocketAddress addr = InetSocketAddress .createUnresolved (hostName , portNumber );
2709- for (int i = 0 ; i < addressList .size (); i ++) {
2710- addr = new InetSocketAddress (addressList .get (i ), portNumber );
2711- if (!addr .isUnresolved ())
2712- return addr ;
2708+ synchronized (addressList ) {
2709+ InetSocketAddress addr = InetSocketAddress .createUnresolved (hostName , portNumber );
2710+ for (int i = 0 ; i < addressList .size (); i ++) {
2711+ addr = new InetSocketAddress (addressList .get (i ), portNumber );
2712+ if (!addr .isUnresolved ())
2713+ return addr ;
2714+ }
2715+ return addr ;
27132716 }
2714- return addr ;
27152717 }
27162718
27172719 /**
@@ -2794,17 +2796,19 @@ private Socket getSocketByIPPreference(String hostName, int portNumber, int time
27942796 * Boolean switch for IPv6 first
27952797 */
27962798 private void fillAddressList (InetAddress [] addresses , boolean ipv6first ) {
2797- addressList .clear ();
2798- if (ipv6first ) {
2799- for (InetAddress addr : addresses ) {
2800- if (addr instanceof Inet6Address ) {
2801- addressList .add (addr );
2799+ synchronized (addressList ) {
2800+ addressList .clear ();
2801+ if (ipv6first ) {
2802+ for (InetAddress addr : addresses ) {
2803+ if (addr instanceof Inet6Address ) {
2804+ addressList .add (addr );
2805+ }
28022806 }
2803- }
2804- } else {
2805- for ( InetAddress addr : addresses ) {
2806- if ( addr instanceof Inet4Address ) {
2807- addressList . add ( addr );
2807+ } else {
2808+ for ( InetAddress addr : addresses ) {
2809+ if ( addr instanceof Inet4Address ) {
2810+ addressList . add ( addr );
2811+ }
28082812 }
28092813 }
28102814 }
0 commit comments