The socket handler will keep looping until it has managed to drain all data from the socket. If this never happens then we never return to the main loop and check if we should exit. I've tested this on OS X just by having glxgears running. It is impossible to close the client until glxgears is terminated. This is not a regression and has probably been present since we ported things to FLTK.
*** Bug 6118 has been marked as a duplicate of this bug. ***
Fixed upstream: https://github.com/TigerVNC/tigervnc/commit/9a73adf9f47c8fab82add168bf7f50b7fe6ef2a3
Verified that the problem exists with tlclient 4.7.0 on OS X 10.8. Verified that it is fixed in build 5369. Works well.