Total guess, but the client probably assumes scribing will succeed under normal circumstances and gets stuck in scribe-mode waiting for a packet.
I would try:
Code:
UnscribeSpell(memspell->slot, true);
Sends a delete-from-spellbook packet to the client. It may accept that as a failure to scribe.
Alternatively:
Code:
MemorizeSpell(memspell->slot, 0xFFFFFFFF, memSpellScribing);
Sends the success packet the client expects. Not sure if the client would consider 0xFFFFFFFF to be an invalid spellid the way we do, though...
I am moderately confident that the first one might work.