M Local/NosSmooth.LocalClient/NostaleLocalClient.cs => Local/NosSmooth.LocalClient/NostaleLocalClient.cs +2 -18
@@ 112,15 112,7 @@ public class NostaleLocalClient : BaseNostaleClient
throw new InvalidOperationException("The interceptor cannot be null if interception is allowed.");
}
- var process = _interceptor.InterceptReceive(ref packet);
- if (process)
- {
- ReceivePacket(packet);
- }
- }
- else
- {
- ReceivePacket(packet);
+ return _interceptor.InterceptReceive(ref packet);
}
// TODO: handlers
@@ 138,15 130,7 @@ public class NostaleLocalClient : BaseNostaleClient
throw new InvalidOperationException("The interceptor cannot be null if interception is allowed.");
}
- var process = _interceptor.InterceptSend(ref packet);
- if (process)
- {
- SendPacket(packet);
- }
- }
- else
- {
- SendPacket(packet);
+ return _interceptor.InterceptSend(ref packet);
}
// TODO: handlers
M Local/NosSmooth.LocalCore/Network.cpp => Local/NosSmooth.LocalCore/Network.cpp +2 -1
@@ 7,7 7,8 @@ using namespace System;
Network::Network(ModuleHook moduleHook)
{
- NetworkUnmanaged::GetInstance()->Setup(moduleHook);
+ _networkUnmanaged = NetworkUnmanaged::GetInstance();
+ _networkUnmanaged->Setup(moduleHook);
}
void Network::ResetHooks()
M Local/NosSmooth.LocalCore/Network.h => Local/NosSmooth.LocalCore/Network.h +2 -0
@@ 37,6 37,8 @@ namespace NosSmoothCore
/// Resets all the function hooks.
/// </summary>
void ResetHooks();
+ private:
+ NetworkUnmanaged* _networkUnmanaged;
};
}
M Local/NosSmooth.LocalCore/NetworkUnmanaged.cpp => Local/NosSmooth.LocalCore/NetworkUnmanaged.cpp +10 -2
@@ 28,13 28,17 @@ void PacketSendDetour()
mov packet, edx
}
- NetworkUnmanaged::GetInstance()->ExecuteSendCallback(packet);
+ bool isAccepted = NetworkUnmanaged::GetInstance()->ExecuteSendCallback(packet);
__asm
{
popfd
popad
}
+
+ if (isAccepted) {
+ NetworkUnmanaged::GetInstance()->SendPacket(packet);
+ }
}
void PacketReceiveDetour()
@@ 49,13 53,17 @@ void PacketReceiveDetour()
mov packet, edx
}
- NetworkUnmanaged::GetInstance()->ExecuteReceiveCallback(packet);
+ bool isAccepted = NetworkUnmanaged::GetInstance()->ExecuteReceiveCallback(packet);
__asm
{
popfd
popad
}
+
+ if (isAccepted) {
+ NetworkUnmanaged::GetInstance()->ReceivePacket(packet);
+ }
}
void NetworkUnmanaged::Setup(ModuleHook moduleHook)