Rob, what I am doing here is designing a remote device that talks over a Xbee module to a station. The station sends commands using a protocol where data is encapsulated with SYNC command, device ID to which it wants to talk too, command description and data and finally checksum.
On my ISR I am buffering the whole message and then once I reach checksum y call a parsing function that save the data of the message to dynamic memory using malloc. All these is then buffered on a circular buffer so that if the remote device is busy with something else it will execute that message later. Remote device has a serial camera and a GPS. Only at that moment at the end of a message if when my ISR routine can be longer as it calls that parsing function.
That is the whole idea why I want to have nested interrupts enabled so that I am sure I do not miss any data on serial port.
Another thing that could be done is to move the parsing function outside the ISR but I decided to include it on the ISR and I do not want to modify it now.