From 0a20fe49f4e13161fc5b528560140325fa7d37a0 Mon Sep 17 00:00:00 2001 From: Micheal X Date: Sun, 23 Jul 2023 18:41:25 +1200 Subject: [PATCH] 5.4.5 fix bugs and improve performance. --- code/default/launcher/start.py | 3 ++- code/default/launcher/sys_platform.py | 3 ++- code/default/launcher/update.py | 4 +++- code/default/lib/noarch/front_base/boringssl_wrap.py | 8 ++++++-- code/default/lib/noarch/front_base/http_common.py | 2 +- code/default/lib/noarch/front_base/http_dispatcher.py | 2 ++ code/default/version.txt | 2 +- code/default/x_tunnel/local/proxy_session.py | 11 +++++++---- 8 files changed, 24 insertions(+), 11 deletions(-) diff --git a/code/default/launcher/start.py b/code/default/launcher/start.py index b5af2950be..c9ed678281 100644 --- a/code/default/launcher/start.py +++ b/code/default/launcher/start.py @@ -144,8 +144,9 @@ def main(): module_init.xargs["allow_remote"] = 1 if os.getenv("NOT_MESS_SYSTEM", "0") != "0" or no_mess_system or config.no_mess_system: - xlog.info("start with no_mess_system, no CA will be imported to system.") + xlog.info("start with no_mess_system, no CA will be imported to system, not create desktop.") module_init.xargs["no_mess_system"] = 1 + update.should_create_desktop_shortcut = False if os.path.isfile(running_file): restart_from_except = True diff --git a/code/default/launcher/sys_platform.py b/code/default/launcher/sys_platform.py index 5d81344e58..b5c5e87113 100644 --- a/code/default/launcher/sys_platform.py +++ b/code/default/launcher/sys_platform.py @@ -13,7 +13,8 @@ if sys.platform.startswith("linux"): - if os.path.isfile("/system/bin/dalvikvm") or os.path.isfile("/system/bin/dalvikvm64"): + if os.path.isfile("/system/bin/dalvikvm") or os.path.isfile("/system/bin/dalvikvm64") or \ + "android.googlesource.com" in sys.version: xlog.info("This is Android") has_desktop = False platform = "android" diff --git a/code/default/launcher/update.py b/code/default/launcher/update.py index bd666871f6..8d33776a17 100644 --- a/code/default/launcher/update.py +++ b/code/default/launcher/update.py @@ -41,6 +41,8 @@ root_path = os.path.abspath(os.path.join(current_path, os.pardir)) data_root = os.path.abspath(os.path.join(root_path, os.pardir, os.pardir, 'data')) +should_create_desktop_shortcut = True + def get_opener(): autoproxy = '127.0.0.1:8086' @@ -368,7 +370,7 @@ def check_new_machine(): if sys.platform == "win32" and platform.release() == "XP": notify_install_tcpz_for_winXp() - if sys_platform.has_desktop and os.getenv("XXNET_NO_MESS_SYSTEM", "0") == "0": + if sys_platform.has_desktop and should_create_desktop_shortcut: xlog.info("generate desktop shortcut") create_desktop_shortcut() diff --git a/code/default/lib/noarch/front_base/boringssl_wrap.py b/code/default/lib/noarch/front_base/boringssl_wrap.py index 529ddb0798..37114626d2 100644 --- a/code/default/lib/noarch/front_base/boringssl_wrap.py +++ b/code/default/lib/noarch/front_base/boringssl_wrap.py @@ -278,7 +278,6 @@ def __init__(self, logger, ca_certs=None, cipher_suites=None, support_http2=True cmd = b"ALL:!aPSK:!ECDSA+SHA1:!3DES" bssl.BSSL_SSL_CTX_set_cipher_list(self.ctx, cmd) - bssl.BSSL_SSL_CTX_set_num_tickets(self.ctx, 0) if support_http2: alpn = b"" @@ -303,7 +302,12 @@ def __init__(self, logger, ca_certs=None, cipher_suites=None, support_http2=True bssl.BSSL_SSL_CTX_set_verify_algorithm_prefs(self.ctx, cdata_ptr, len(algs)) bssl.BSSL_SSL_CTX_set_min_proto_version(self.ctx, 0x0303) - bssl.BSSL_SSL_CTX_set_permute_extensions(self.ctx, 1) + + try: + bssl.BSSL_SSL_CTX_set_num_tickets(self.ctx, 0) + bssl.BSSL_SSL_CTX_set_permute_extensions(self.ctx, 1) + except: + self.logger.info("boringsssl not support permute extension") bssl.SetCompression(self.ctx) diff --git a/code/default/lib/noarch/front_base/http_common.py b/code/default/lib/noarch/front_base/http_common.py index 3b19d544c9..1ab4628a8c 100644 --- a/code/default/lib/noarch/front_base/http_common.py +++ b/code/default/lib/noarch/front_base/http_common.py @@ -179,7 +179,7 @@ def finish(self): class HttpWorker(object): - max_payload = 128 * 1024 + max_payload = 32 * 1024 def __init__(self, logger, ip_manager, config, ssl_sock, close_cb, retry_task_cb, idle_cb, log_debug_data): self.logger = logger diff --git a/code/default/lib/noarch/front_base/http_dispatcher.py b/code/default/lib/noarch/front_base/http_dispatcher.py index 20ad18ff26..de758ab1b4 100644 --- a/code/default/lib/noarch/front_base/http_dispatcher.py +++ b/code/default/lib/noarch/front_base/http_dispatcher.py @@ -455,6 +455,8 @@ def close_all_worker(self, reason="close all worker"): def log_debug_data(self, rtt, sent, received): self.rtts.append(rtt) + if len(self.rtts) > 30: + self.rtts.pop(0) self.total_sent += sent self.total_received += received diff --git a/code/default/version.txt b/code/default/version.txt index f430587706..3caaea5547 100644 --- a/code/default/version.txt +++ b/code/default/version.txt @@ -1 +1 @@ -5.4.2 \ No newline at end of file +5.4.5 \ No newline at end of file diff --git a/code/default/x_tunnel/local/proxy_session.py b/code/default/x_tunnel/local/proxy_session.py index c0848da7a9..224ad21696 100644 --- a/code/default/x_tunnel/local/proxy_session.py +++ b/code/default/x_tunnel/local/proxy_session.py @@ -99,7 +99,6 @@ def start(self): self.conn_list = {} self.transfer_list = {} self.last_send_time = time.time() - self.on_road_num = 0 self.last_receive_time = 0 self.traffic = 0 @@ -666,6 +665,7 @@ def normal_round_trip_worker(self, work_id): if status == 521: xlog.warn("X-tunnel server is down, try get new server.") g.server_host = None + self.on_road_num -= 1 self.stop() login_process() return @@ -676,10 +676,11 @@ def normal_round_trip_worker(self, work_id): time.sleep(sleep_time) continue + content_length = int(response.headers.get(b"Content-Length", b"0")) recv_len = len(content) - if recv_len < 6: - xlog.warn("roundtrip time:%f transfer_no:%d send:%d recv:%d Head", - roundtrip_time, transfer_no, send_data_len, recv_len) + if recv_len < 6 or recv_len != content_length: + xlog.warn("roundtrip time:%f transfer_no:%d send:%d recv:%d Head:%d", + roundtrip_time, transfer_no, send_data_len, recv_len, content_length) continue try: @@ -699,6 +700,7 @@ def normal_round_trip_worker(self, work_id): if error_code == 1: # no quota xlog.warn("x_server error:no quota") + self.on_road_num -= 1 self.stop() return elif error_code == 2: @@ -710,6 +712,7 @@ def normal_round_trip_worker(self, work_id): # session not exist if self.session_id == request_session_id: xlog.warn("server session_id:%s not exist, reset session.", request_session_id) + self.on_road_num -= 1 self.reset() return else: