CListener: consistently use shared_from_this()