reconnecting listener - use reentrant lock