fix bug: can't download file which size below 16B
add timeout support
add timeout
add timeout