in reply to Dealing with multiple processes?
I think you need general dispatcher and spawned handlers for a particular call.
In main loop, receive packet, if it is a new call, spawn a handler, register it (make a link between call and handler) and give him this packet. If it is a packet for registered call, give it to particular handler. Otherwise just drop it.
Handlers will decode packets in context of current session; if session ends, handler exits.
In Section
Seekers of Perl Wisdom