Compare commits
2 Commits
8578cde620
...
be414891ec
Author | SHA1 | Date | |
---|---|---|---|
be414891ec | |||
787876ab6a |
@@ -68,37 +68,6 @@ class UnixIpcServer extends IpcServer {
|
||||
}
|
||||
}
|
||||
|
||||
// Handle IPC handshake
|
||||
void _onIpcHandshake(
|
||||
IpcSocketWrapper socket,
|
||||
Map<String, dynamic> params,
|
||||
Map<String, Function> handlers,
|
||||
) {
|
||||
developer.log('IPC handshake: $params', name: kRpcIpcLogPrefix);
|
||||
|
||||
final ver = int.tryParse(params['v']?.toString() ?? '1') ?? 1;
|
||||
final clientId = params['client_id']?.toString() ?? '';
|
||||
|
||||
if (ver != 1) {
|
||||
developer.log(
|
||||
'IPC unsupported version requested: $ver',
|
||||
name: kRpcIpcLogPrefix,
|
||||
);
|
||||
socket.closeWithCode(IpcErrorCodes.invalidVersion);
|
||||
return;
|
||||
}
|
||||
|
||||
if (clientId.isEmpty) {
|
||||
developer.log('IPC client ID required', name: kRpcIpcLogPrefix);
|
||||
socket.closeWithCode(IpcErrorCodes.invalidClientId);
|
||||
return;
|
||||
}
|
||||
|
||||
socket.clientId = clientId;
|
||||
|
||||
handlers['connection']?.call(socket);
|
||||
}
|
||||
|
||||
Future<String> _getMacOsSystemTmpDir() async {
|
||||
final result = await Process.run('getconf', ['DARWIN_USER_TEMP_DIR']);
|
||||
return (result.stdout as String).trim();
|
||||
|
@@ -13,7 +13,7 @@ class WindowsIpcServer extends IpcServer {
|
||||
|
||||
@override
|
||||
Future<void> start() async {
|
||||
final pipeName = r'\\.\pipe\discord-ipc'.toNativeUtf16();
|
||||
final pipeName = r'\\.\pipe\discord-ipc-0'.toNativeUtf16();
|
||||
try {
|
||||
_pipeHandle = CreateNamedPipe(
|
||||
pipeName,
|
||||
@@ -32,7 +32,7 @@ class WindowsIpcServer extends IpcServer {
|
||||
}
|
||||
|
||||
developer.log(
|
||||
'IPC named pipe created at \\\\.\\pipe\\discord-ipc',
|
||||
r'IPC named pipe created at \\.\pipe\discord-ipc-0',
|
||||
name: kRpcIpcLogPrefix,
|
||||
);
|
||||
|
||||
@@ -71,6 +71,7 @@ class WindowsIpcServer extends IpcServer {
|
||||
await Isolate.spawn(_windowsIpcIsolate, receivePort.sendPort);
|
||||
|
||||
receivePort.listen((message) {
|
||||
developer.log(message.toString(), name: kRpcIpcLogPrefix);
|
||||
if (message is int) {
|
||||
final socketWrapper = WindowsIpcSocketWrapper(message);
|
||||
addSocket(socketWrapper);
|
||||
@@ -87,7 +88,7 @@ class WindowsIpcServer extends IpcServer {
|
||||
static void _windowsIpcIsolate(SendPort sendPort) {
|
||||
while (true) {
|
||||
final pipeHandle = CreateNamedPipe(
|
||||
r'\\.\pipe\discord-ipc'.toNativeUtf16(),
|
||||
r'\\.\pipe\discord-ipc-0'.toNativeUtf16(),
|
||||
PIPE_ACCESS_DUPLEX,
|
||||
PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT,
|
||||
PIPE_UNLIMITED_INSTANCES,
|
||||
@@ -108,7 +109,7 @@ class WindowsIpcServer extends IpcServer {
|
||||
sendPort.send(pipeHandle);
|
||||
}
|
||||
// Avoid tight loop
|
||||
sleep(Duration(milliseconds: 100));
|
||||
sleep(Duration(milliseconds: 500));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -163,37 +164,6 @@ class WindowsIpcServer extends IpcServer {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Handle IPC handshake
|
||||
void _onIpcHandshake(
|
||||
IpcSocketWrapper socket,
|
||||
Map<String, dynamic> params,
|
||||
Map<String, Function> handlers,
|
||||
) {
|
||||
developer.log('IPC handshake: $params', name: kRpcIpcLogPrefix);
|
||||
|
||||
final ver = int.tryParse(params['v']?.toString() ?? '1') ?? 1;
|
||||
final clientId = params['client_id']?.toString() ?? '';
|
||||
|
||||
if (ver != 1) {
|
||||
developer.log(
|
||||
'IPC unsupported version requested: $ver',
|
||||
name: kRpcIpcLogPrefix,
|
||||
);
|
||||
socket.closeWithCode(IpcErrorCodes.invalidVersion);
|
||||
return;
|
||||
}
|
||||
|
||||
if (clientId.isEmpty) {
|
||||
developer.log('IPC client ID required', name: kRpcIpcLogPrefix);
|
||||
socket.closeWithCode(IpcErrorCodes.invalidClientId);
|
||||
return;
|
||||
}
|
||||
|
||||
socket.clientId = clientId;
|
||||
|
||||
handlers['connection']?.call(socket);
|
||||
}
|
||||
}
|
||||
|
||||
class WindowsIpcSocketWrapper extends IpcSocketWrapper {
|
||||
|
Reference in New Issue
Block a user