goto out;
}
+ UUID pipe_uuid;
+ RPC_STATUS rpc_stat = UuidCreate(&pipe_uuid);
+ if (rpc_stat != RPC_S_OK)
+ {
+ ReturnError(pipe, rpc_stat, L"UuidCreate", 1, &exit_event);
+ goto out;
+ }
+
+ RPC_WSTR pipe_uuid_str = NULL;
+ rpc_stat = UuidToStringW(&pipe_uuid, &pipe_uuid_str);
+ if (rpc_stat != RPC_S_OK)
+ {
+ ReturnError(pipe, rpc_stat, L"UuidToString", 1, &exit_event);
+ goto out;
+ }
swprintf(ovpn_pipe_name, _countof(ovpn_pipe_name),
- L"\\\\.\\pipe\\" _L(PACKAGE) L"%ls\\service_%lu", service_instance,
- GetCurrentThreadId());
+ L"\\\\.\\pipe\\" _L(PACKAGE) L"%ls\\service_%lu_%ls", service_instance,
+ GetCurrentThreadId(), pipe_uuid_str);
+ RpcStringFree(&pipe_uuid_str);
+
ovpn_pipe = CreateNamedPipe(
ovpn_pipe_name, PIPE_ACCESS_DUPLEX | FILE_FLAG_FIRST_PIPE_INSTANCE | FILE_FLAG_OVERLAPPED,
- PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT, 1, 128, 128, 0, NULL);
+ PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT | PIPE_REJECT_REMOTE_CLIENTS, 1, 128, 128, 0, NULL);
if (ovpn_pipe == INVALID_HANDLE_VALUE)
{
ReturnLastError(pipe, L"CreateNamedPipe");