add timeout option

看了下，主要就是这个地方有改一点，其它都没动什么