update docs and add details on proudnet version

This commit is contained in:
Benjamin Palko 2026-10-15 09:02:53 -04:00
parent 7834b98bf0
commit af36074fed
5 changed files with 115 additions and 3 deletions

31
third-party/README.md vendored
View file

@ -95,6 +95,37 @@ ProudNet is not a separate DLL; it is linked into the server EXEs.
- To re-fetch:
`git archive ProudNetLibSetup-1.8.00001 ProudNet/include ProudNet-License-En.txt`
from that repo into `_local/proudnet-1.8.00001/`.
- **`github.com/Nettention/ProudChatSDK` (checked 2026-10-15, `main` = tag
`1.1.0001`, commit `e0d9d6b8`).**
- **Contents:** bundles ProudNet **1.8.58849**: 185 headers, plus prebuilt
libraries for Windows (v110/v120/v140, dll), Android, iOS and
**x86_64 Linux** (`libProudNetServer.so/.a`, `libProudNetClient.so/.a`;
`__xstat` → old glibc).
- **Licence:** the repo's `LICENSE` (MIT) covers the chat SDK only;
`ProudNet/` keeps the same proprietary EULA (§1.2b). Nothing from it is
stored in this repo.
- **Headers:** identical to 1.8.00001 apart from the version banner and
translated doc comments in `ErrorType.h`. They add one error code and give
no new information beyond `_local/proudnet-1.8.00001`.
- **Compatibility with the 2013 ProudNet linked into DBCServer:**
| Aspect | Result | Type |
|---|---|---|
| PIDL proxy ABI | Matches: `IRmiProxy` keeps `m_signature` at +0x14, which the generated constructor checks against 1 (`MS:0x140008e20`). `RmiID` is still `uint16_t`. The `PIDL compiler is incompatible` and `CStartServerParameter::m_(fast)encryptedMessageKeyLength` strings appear in both | O |
| Internal implementation | 29 of DBCServer's 63 `Proud::` RTTI classes are absent from the 1.8.58849 Linux libraries' symbols, e.g. `CTcpLayer_C`, `CUdpSocket_S`, `CUpnp`, `ICompletionPortEventSink` | O |
| Internal net version | **2013 build: 196978 (0x30172)**, the global at `DBC:0x140344d40`. It is copied into the server object at +0x220 (`DBC:0x14018fa70`, instruction at `0x14019018d`) and into the client objects (`0x1401dd3e0`, `0x1401df000`). In the connect handshake (`DBC:0x1401a8110`, `NotifyServerConnectionRequestData`) the server reads a credential byte array, a 16-byte protocol GUID and a 4-byte int, and accepts only if the GUID **and** the int equal its own. The same value appears exactly once in `.data` of all 16 EXEs (O). **1.8.58849: 197144 (0x30218)** (`CNetConfig::InternalNetVersion`, rejected via `NotifyProtocolVersionMismatch`). The values differ by 166 | O |
| Licensing | 1.8 also contains license and activation checks (`CPNLic`, `NotifyLicenseMismatch`) | S |
- **Conclusion (I):**
- **Source-level:** usable as a header/ABI reference for PIDL-generated
stubs and proxies.
- **Wire-level:** **not** compatible with the original 2013 peers. The
internal net versions differ (196978 vs 197144), and the 2013 handshake
requires an exact match. This is O for the 2013 server side; I for the
1.8 side, which was not traced beyond the symbol name.
- **Linking:** linking `libProudNetServer.so` into `src/dbc_server`
would require accepting the EULA and a licence, and would give a
ProudNet 1.8 server that the original binaries likely cannot talk to.
Vendor attributions for XTrap (WiseLogic) and Apex are inferred from DLL
names, not corroborated by decompilation.