Hey, all! After some more digging, I found that iotivity uses a thread to periodically drain the IP sockets. So, I commented out the code that spawns the thread and exposed the function that drains the IP sockets (CAFindReadyMessage()). Together with the file descriptor watches for the IP sockets I find that I can react to a fd becoming readable by calling CAFindReadyMessage() followed by OCProcess().
This is great 'n all, but it's far from a palatable solution, because there still needs to be a way of collecting all the file desciptors for /all/ the protocols (not just IP) and attaching watches to them, and exposing the function responsible for draining them. I'll keep digging, and please chime in :) HTH, Gabriel
