From 5874c6d99e84790780cd41ee7d1098c17e81761d Mon Sep 17 00:00:00 2001 From: yndu13 Date: Thu, 9 Mar 2023 11:57:54 +0800 Subject: [PATCH] fix: multiple clients conflicts when clients have proxies --- .../com/aliyun/tea/okhttp/ClientHelper.java | 13 +++++++++++-- .../com/aliyun/tea/okhttp/ClientHelperTest.java | 17 +++++++++++++++-- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/aliyun/tea/okhttp/ClientHelper.java b/src/main/java/com/aliyun/tea/okhttp/ClientHelper.java index bb7ba16..b30a5f4 100644 --- a/src/main/java/com/aliyun/tea/okhttp/ClientHelper.java +++ b/src/main/java/com/aliyun/tea/okhttp/ClientHelper.java @@ -1,5 +1,6 @@ package com.aliyun.tea.okhttp; +import com.aliyun.tea.utils.StringUtils; import okhttp3.OkHttpClient; import java.net.URI; @@ -15,11 +16,15 @@ public static OkHttpClient getOkHttpClient(String host, int port, Map map) { public static String getClientKey(String host, int port) { return String.format("%s:%d", host, port); } + + public static String getClientKey(String host, int port, String userInfo) { + return String.format("%s@%s:%d", userInfo, host, port); + } } diff --git a/src/test/java/com/aliyun/tea/okhttp/ClientHelperTest.java b/src/test/java/com/aliyun/tea/okhttp/ClientHelperTest.java index 6fc7713..588813a 100644 --- a/src/test/java/com/aliyun/tea/okhttp/ClientHelperTest.java +++ b/src/test/java/com/aliyun/tea/okhttp/ClientHelperTest.java @@ -17,7 +17,7 @@ public void getClientKeyTest() { } @Test - public void getOkHttpClientTest() throws Exception{ + public void getOkHttpClientTest() throws Exception { Map map = new HashMap<>(); map.put("httpProxy", "http://127.0.0.1:80"); OkHttpClient client = ClientHelper.getOkHttpClient(null, 0, map); @@ -29,11 +29,24 @@ public void getOkHttpClientTest() throws Exception{ Assert.assertNotNull(client); Assert.assertNotNull(clients.get("127.0.0.1:80")); + map.put("httpsProxy", "https://user:password@127.0.0.1:80"); + client = ClientHelper.getOkHttpClient(null, 0, map); + Assert.assertNotNull(client); + Assert.assertNotNull(clients.get("user:password@127.0.0.1:80")); + Assert.assertNotSame(clients.get("user:password@127.0.0.1:80"), clients.get("127.0.0.1:80")); + + map.put("httpsProxy", null); map.put("socks5Proxy", "socks5://user:password@127.0.0.1:1080"); client = ClientHelper.getOkHttpClient(null, 0, map); Assert.assertNotNull(client); - Assert.assertNotNull(clients.get("127.0.0.1:1080")); + Assert.assertNull(clients.get("127.0.0.1:1080")); + Assert.assertNotNull(clients.get("user:password@127.0.0.1:1080")); + + map.put("socks5Proxy", "socks5://user:passwd@127.0.0.1:1080"); + client = ClientHelper.getOkHttpClient(null, 0, map); + Assert.assertNotNull(client); + Assert.assertNotSame(clients.get("user:password@127.0.0.1:1080"), clients.get("user:passwd@127.0.0.1:1080")); } }