While it's a good start, I see it far from perfect... what if some other non-emule client wants to follow a similar approach?
I guess they can send something in the mod tag for that... and the check for SO_EMULE can be removed. Then again, it seems sub-optimal. A new tag for "non-pure-protocol" could fit better for that task, as it won't force non-mule clients to send modtags.
As for the rest of the tags, yes, they can be moved to a new packet that is sent only for non-pure clients just as you say. The problem is ofcourse the backwards compatibility, so I think the test would be more like:
client send the non-pure tag
-> send new opcode
else
if SO_EMULE && client is <=0.47a
---> send old tags on helloanswer
else
---> do nothing
This means the new tag/opcode must be agreed/coded/etc before the next official, and so it should be used as soon as mod merge the next official.
This is good as new offcial / non-mule / etc won't get any more spam than this new tag. Problem is old clients keep getting it, but hey, at least only eMule ones (so this solve my spam problems
)
Point out my mistakes, please.