A: 

Where do you allocate the first responseData?

What is [self processMsg:currMsg] doing with the data? If it is expecting the data to be around after -processMsg: returns, and it isn't explicitly making a copy, then you are in trouble.

Infact, unless you have finished with the received data before didReceiveData: returns, you need to make a copy of it somewhere, which isn't visible in the code shown.

You need to allocate the storage for tempBuffer, not pass in an uninitialised pointer;

You should look probably for a pre-rolled implementation of a simple ring buffer. There are plenty around.

mustISignUp