Instead of a delay and a send-message confirmation, I think it'd be better to let the InSim handle all MSO directly. Only problem with that is that there's no packet allowing the same message length as an MSO. That means we'd either need a new packet of similar structure, or MSO would have to be both ways.
An InSim application would register as MSO handler via a new ISFlag:
#define ISF_RES_0 1 // bit 0 : spare
#define ISF_RES_1 2 // bit 1 : spare
#define ISF_LOCAL 4 // bit 2 : guest or single player
#define ISF_MSO_COLS 8 // bit 3 : keep colours in MSO text
#define ISF_NLP 16 // bit 4 : receive NLP packets
#define ISF_MCI 32 // bit 5 : receive MCI packets
[B]#define ISF_MSO_FILTER 64 // bit 6 : InSim application handles all MSO[/B]
And that leaves only one thing I'm not certain about: How to deal with multiple InSim applications, especially if more than one of them register as MSO handler.