diff --git a/li/cil/oc/Settings.scala b/li/cil/oc/Settings.scala index 73df50ebf..1433aa70a 100644 --- a/li/cil/oc/Settings.scala +++ b/li/cil/oc/Settings.scala @@ -139,7 +139,7 @@ class Settings(config: Config) { val httpThreads = config.getInt("http.threads") max 1 val httpHostBlacklist = Array(config.getStringList("http.blacklist"): _*) val httpHostWhitelist = Array(config.getStringList("http.whitelist"): _*) - val httpTimeout = config.getInt("http.requestTimeout") max 0 + val httpTimeout = (config.getInt("http.requestTimeout") max 0) * 1000 // ----------------------------------------------------------------------- // // misc diff --git a/li/cil/oc/server/component/WirelessNetworkCard.scala b/li/cil/oc/server/component/WirelessNetworkCard.scala index 88a66cea7..693ffaa5d 100644 --- a/li/cil/oc/server/component/WirelessNetworkCard.scala +++ b/li/cil/oc/server/component/WirelessNetworkCard.scala @@ -1,7 +1,7 @@ package li.cil.oc.server.component import java.io._ -import java.net.{HttpURLConnection, URL} +import java.net.{SocketTimeoutException, HttpURLConnection, URL} import java.util.concurrent.Future import java.util.regex.Matcher import li.cil.oc.api.network._ @@ -59,6 +59,7 @@ class WirelessNetworkCard(val owner: TileEntity) extends NetworkCard { if (post.isDefined) { http.setRequestMethod("POST") http.setDoOutput(true) + http.setReadTimeout(Settings.get.httpTimeout) val out = new BufferedWriter(new OutputStreamWriter(http.getOutputStream)) out.write(post.get) @@ -91,6 +92,8 @@ class WirelessNetworkCard(val owner: TileEntity) extends NetworkCard { catch { case e: FileNotFoundException => context.signal("http_response", address, Unit, "not found: " + Option(e.getMessage).getOrElse(e.toString)) + case _: SocketTimeoutException => + context.signal("http_response", address, Unit, "timeout") case e: Throwable => context.signal("http_response", address, Unit, Option(e.getMessage).getOrElse(e.toString)) }