Merge remote-tracking branch 'origin/main'

This commit is contained in:
wanghongenpin
2025-08-30 10:32:53 +08:00
8 changed files with 22 additions and 11 deletions

View File

@@ -83,10 +83,10 @@ class ProcessInfoManager private constructor() {
return null
}
val connectivityManager: ConnectivityManager =
activity!!.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
try {
val connectivityManager: ConnectivityManager =
activity!!.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val uid = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
connectivityManager.getConnectionOwnerUid(
OsConstants.IPPROTO_TCP, localAddress, remoteAddress

View File

@@ -140,7 +140,6 @@ class Channel {
if (!isClosed) {
_socket.add(bytes);
}
} catch (e, t) {
if (e is StateError && e.message == "StreamSink is closed") {
logger.w("[$id] $remoteSocketAddress write error channel is closed $e", stackTrace: t);

View File

@@ -39,6 +39,11 @@ class ChannelDispatcher extends ChannelHandler<Uint8List> {
/// 监听
void listen(Channel channel, ChannelContext channelContext) {
buffer.clear();
channel.socket.done.onError((error, StackTrace trace) {
logger.e('[${channelContext.clientChannel?.id}] secureSocket done error', error: error, stackTrace: trace);
channel.dispatcher.exceptionCaught(channelContext, channel, error, trace: trace);
return null;
});
channel.socket.listen((data) => channel.dispatcher.channelRead(channelContext, channel, data),
onError: (error, trace) => channel.dispatcher.exceptionCaught(channelContext, channel, error, trace: trace),
onDone: () => channel.dispatcher.channelInactive(channelContext, channel));
@@ -130,7 +135,7 @@ class ChannelDispatcher extends ChannelHandler<Uint8List> {
var data = decodeResult.data;
if (data is HttpMessage) {
data.packageSize = length;
data.packageSize ??= length;
data.remoteHost = channel.remoteSocketAddress.host;
data.remotePort = channel.remoteSocketAddress.port;
}
@@ -217,6 +222,7 @@ class ChannelDispatcher extends ChannelHandler<Uint8List> {
@override
channelInactive(ChannelContext channelContext, Channel channel) async {
await taskQueue.waitForAll();
channel.isOpen = false;
handler.channelInactive(channelContext, channel);
}
}

View File

@@ -51,6 +51,11 @@ abstract class Network {
onError: (error, StackTrace trace) =>
channel.dispatcher.exceptionCaught(channelContext, channel, error, trace: trace),
onDone: () => channel.dispatcher.channelInactive(channelContext, channel));
channel.socket.done.onError((error, StackTrace trace) {
logger.e('[${channelContext.clientChannel?.id}] socket done error', error: error, stackTrace: trace);
channel.dispatcher.exceptionCaught(channelContext, channel, error, trace: trace);
});
return channel;
}

View File

@@ -127,7 +127,7 @@ abstract class Http2Codec<T extends HttpMessage> implements Codec<T, T> {
Map<String, List<String>> headers = _parseHeaders(channelContext, framePayload);
headers.forEach((key, values) => message.headers.addValues(key, values));
message.packageSize = (message.packageSize ?? 0) + frameHeader.length;
if (frameHeader.hasEndHeadersFlag &&
channelContext.getStreamRequest(frameHeader.streamIdentifier)?.method == HttpMethod.head) {
result.isDone = true;
@@ -304,6 +304,7 @@ abstract class Http2Codec<T extends HttpMessage> implements Codec<T, T> {
} else {
message.body = List.from(message.body!)..addAll(data);
}
message.packageSize = (message.packageSize ?? 0) + frameHeader.length;
return DataFrame(frameHeader, padLength, data);
}
@@ -352,6 +353,7 @@ abstract class Http2Codec<T extends HttpMessage> implements Codec<T, T> {
}
});
message.packageSize = frameHeader.length;
return HeadersFrame(frameHeader, padLength, exclusiveDependency, streamDependency, weight, blockFragment);
}

View File

@@ -89,7 +89,6 @@ abstract class HttpMessage {
set body(List<int>? body) {
_body = body;
_bodyString = null;
packageSize = body?.length ?? 0;
}
///获取消息体编码

View File

@@ -77,9 +77,9 @@ String getPackage(int? size) {
}
if (size > 1024 * 1024) {
return "${(size / 1024 / 1024).toStringAsFixed(2)} MB";
return "${(size / 1024 / 1024).toStringAsFixed(2)} M";
}
return "${(size / 1024).toStringAsFixed(2)} KB";
return "${(size / 1024).toStringAsFixed(2)} K";
}
String copyRawRequest(HttpRequest request) {

View File

@@ -23,7 +23,7 @@ dependencies:
url: https://gitee.com/wanghongenpin/flutter-plugins.git
path: packages/desktop_multi_window
path_provider: ^2.1.5
file_picker: ^10.3.1
file_picker: ^10.3.2
proxy_manager: ^0.0.3
permission_handler: ^12.0.1
flutter_toastr: ^1.0.3
@@ -44,7 +44,7 @@ dependencies:
qr_flutter: ^4.1.0
flutter_qr_reader_plus: ^1.0.6
brotli: ^0.6.0
macos_window_utils: ^1.8.4
macos_window_utils: ^1.9.0
win32audio: ^1.3.1
vclibs: ^0.1.3