theangryangel/XI4N

Outgauge + MCI Packets = :(

Closed this issue · 7 comments

Karl:

I've IRC'd you.. but I thought it's easier if I do something more proper.

If you (or me) create an app that requires MCI packets and Outgauge packets.. we will only ever receive Outgauge packets.

This is becuase if a UDP port is not set, LFS will send MCI to the TCP connection, however if a UDP port is set (for Outgauge).. the MCI packets are sent there where Outgauge is totally unprepared to handle them (as one would expect).

I was having these issues the other day with MCI packets (as you know).. and I've uncovered as to why this is happening.

Unfortunately, upon first glance.. this doesn't seem like a really easy fix (as it's kinda core to how LFS does everything).

I worked around it by doing awful hacks.. In outgauge you have a test for packets that are larger than normal OG packets.. I'm subverting that check, and if it is longer.. emitting a event stating "unhandled".. then in my plugin I'm passing that data on to insim.

Worst methodology ever. It's gross and ugly but works... somehow :)

12:19 <the_angry_angel> hmm 12:19 <the_angry_angel> architecturally xi4n cant cope with that atm, as you've spotted. 12:20 <the_angry_angel> i had completely forgotten that LFS would do that. 12:21 <the_angry_angel> i can think of a fix, and maintain plugin api compatbility 12:21 <the_angry_angel> sort of 12:21 <the_angry_angel> it would make multi-protocol plugins easier too 12:21 <the_angry_angel> but clientmanager, and client would need be to completely ripped apart

Unsure when I'll be able to do this.

I also noticed LFS behaves weird with MCI packets. Locally and as server, you're allowed to have all MCI packets...

However, when you join an online game.. If only you are on track, you get the stream of MCI packets.. However the instant someone else joins.. No more MCI until you're the only person on track again.

Was a big bummer to find that out. It means I'm relegated to having useless yellow flag detection. :(

Just commited d0f7fb4. It's completely 100% untested (I was offline and on a laptop without LFS), so I'm expecting typos and other broken stuff. Will test over the forthcoming week. Be warned this also breaks the plugin API a little. However if you have any ideas Dustin, nows the time ;)

Hi Karl: I'm gonna take a look at it later tonight. I haven't played with Node in the last while (All my free-time programming has been work programming.. yay :) ).

That also means I'll haffto compile node v0.10 too. C'est la vie! :)

It's probably very broken, as I say it's 100% untested still, but I'm hoping to get some time to test it later this evening :)

Might be worth hanging on for whatever comes after 0.10. I suspect there will be another release soon.

Verified as resolved in d1c25c9.