socket: support send_until