As we mentioned before, icq_Main (line 227) is very important in that aspect that it listens on the network and activates the correct callbacks.
This function is non blocking. It does, however, call the callback functions. So if you want a block free implementation, make sure your callbacks are non-blocking as well.
We estimate that for ``smooth'' operation you would like to call icq_Main every few seconds.