use timeval. keep timeout in milliseconds for backwards compatibility.