kinnay / NintendoClients

Python package to communicate with Switch, Wii U and 3DS servers
MIT License
559 stars 68 forks source link

MatchamkeExtensionServer issues with single Data<Gathering> outputs #105

Open EpicUsername12 opened 1 year ago

EpicUsername12 commented 1 year ago

The following methods have an implementation issue:

They all respond with a single Data<Gathering>

But in the python MatchmakeExtensionServer, the handler expects that:

https://github.com/kinnay/NintendoClients/blob/0d2adcdf8212cdffe59dc5d83a0ddf9fa27c31e8/nintendo/nex/matchmaking.py#L3779-L3784

This check is generated if and only if a method returns a single Data<T>, otherwise it just checks that the response contain the correct fields, with no typechecking.

So if the implementation returns a MatchmakeSession, it should be valid, but since it doesn't inherit from common.Data (but common.Structure, even though it's registered in the DataHolder list), this check fails, and the error is raised.

NOTE: This might be occuring in other protocols, but i didn't bother checking

So a long term fix may be to add a check in the generate_protocols.py script so it checks the object is of a type registered in the DataHolder registry instead of checking the response is an instance of common.Data, i'm waiting for your input on that.