ZeroTierOne/netcon
2015-10-21 16:32:27 -07:00
..
Common.c Normalized cases 2015-10-14 13:47:35 -04:00
Common.h Normalized cases 2015-10-14 13:47:35 -04:00
intercept Added intercept build file and sources 2015-10-09 15:41:16 -04:00
Intercept.c set O_NONBLOCK default in accept() 2015-10-21 16:32:27 -07:00
Intercept.h Added Node.js support 2015-10-21 16:27:17 -07:00
libintercept.so.1.0 set O_NONBLOCK default in accept() 2015-10-21 16:32:27 -07:00
LWIPStack.hpp Fixed recursive lock problem in closeConnection 2015-09-24 16:15:14 -04:00
make-intercept.mk Minor cleanup items 2015-10-14 19:55:21 -04:00
make-liblwip.mk Added liblwip.so and libintercept build files 2015-10-09 17:06:09 -04:00
NetconEthernetTap.cpp Added Node.js support 2015-10-21 16:27:17 -07:00
NetconEthernetTap.hpp Bug fix: Connection fd lookup in service 2015-10-12 20:46:59 -04:00
NetconService.hpp Object-Model refactor: Removed notion of Client 2015-09-27 06:08:39 -04:00
NetconUtilities.cpp Minor cleanup 2015-10-09 17:31:22 -04:00
NetconUtilities.hpp more commenting and cleaning 2015-09-23 15:23:26 -04:00
README.md Added Node.js support 2015-10-21 16:27:17 -07:00
Sendfd.c Normalized cases 2015-10-14 13:47:35 -04:00
Sendfd.h Normalized cases 2015-10-14 13:47:35 -04:00

20151021 Added Node.js support

Notes:

  • syscall(long number, ...) is now intercepted and re-directs the __NR_accept4 call to our intercepted accept4() function
  • accept() now returns -EAGAIN in the case that we cannot read a signal byte from the descriptor linked to the service. This is because the uv__server_io() function in libuv used by Node.js looks for this return value upon failure, without it we were observing an innfinite loop in the I/O polling code in libuv.
  • accept4() now correctly sets given flags for descriptor returned by accept()
  • setsockopt() was modified to return success on any call with the following conditions: level == IPPROTO_TCP || (level == SOL_SOCKET && option_name == SO_KEEPALIVE) This might be unnecessary or might need a better workaround
  • Careful attention should be given to how arguments are passed in the intercepted syscall() function, this differs for 32/64-bit systems