Hey! I'd be willing to look into this, but I'm almost certain that I'll need help :)
I've tried the crude approach by wrapping socket() with ld's --wrap option and passing the file descriptor to libuv's uv_poll_*() APIs to add them to the main loop, and by calling OCProcess() whenever the intercepted sockets become readable. This has not worked :) OCProcess() was being called sometimes, sometimes not, but the bottom line is that the interaction between the client and the server wasn't happening. Since I'm quite unfamiliar with the code base, I would like to ask: Where are all the sources which need to be watched in order for an application to know when OCProcess() needs to be called? Are there sources other than sockets as well? I'll continue digging, but some guidance from a person more familiar with the code base than I would be most welcome :) HTH, Gabriel
