is |sock| returned from this loop? is it changed by the loop? if not, consider const MpingSocket&