diff --git a/build.properties b/build.properties index 38b70ca4d0..0f1040eaa6 100644 --- a/build.properties +++ b/build.properties @@ -5,7 +5,7 @@ forge.version=14.23.5.2860 mod.name=OpenComputers mod.group=li.cil.oc -mod.version=1.8.5-snapshot +mod.version=1.8.6-snapshot ae2.version=rv6-stable-7 buildcraft.version=7.99.24.8 diff --git a/changelog.md b/changelog.md index d39dc0c9cf..0ef527973e 100644 --- a/changelog.md +++ b/changelog.md @@ -1,7 +1,8 @@ ## Fixes/improvements -* [#3710] Fix localization regression introduced in 1.8.4. +* [#3731] Fix string.format() omission in OpenOS package.lua. +* [#3735] Fix server hangs on long-lasting HTTP requests. ## List of contributors -asie, Computerdores, ff66theone, Glease, Hawk777, repo-alt, RobertCochran, yut23 +asie, REUSS-dev diff --git a/src/main/resources/assets/opencomputers/loot/openos/lib/core/boot.lua b/src/main/resources/assets/opencomputers/loot/openos/lib/core/boot.lua index 0bb01a2f1e..f60e8155cc 100644 --- a/src/main/resources/assets/opencomputers/loot/openos/lib/core/boot.lua +++ b/src/main/resources/assets/opencomputers/loot/openos/lib/core/boot.lua @@ -1,7 +1,7 @@ -- called from /init.lua local raw_loadfile = ... -_G._OSVERSION = "OpenOS 1.8.5" +_G._OSVERSION = "OpenOS 1.8.6" -- luacheck: globals component computer unicode _OSVERSION local component = component diff --git a/src/main/scala/li/cil/oc/server/component/InternetCard.scala b/src/main/scala/li/cil/oc/server/component/InternetCard.scala index cfcbbe8e92..e4e71662bb 100644 --- a/src/main/scala/li/cil/oc/server/component/InternetCard.scala +++ b/src/main/scala/li/cil/oc/server/component/InternetCard.scala @@ -528,12 +528,18 @@ object InternetCard { out.close() } + // Finish the connection. Call getInputStream a second time below to re-throw any exception. + // This avoids getResponseCode() waiting for the connection to end in the synchronized block. + try { + http.getInputStream + } catch { + case _: Exception => + } + HTTPRequest.this.synchronized { response = Some((http.getResponseCode, http.getResponseMessage, http.getHeaderFields)) } - // Calling getInputStream() can cause an exception to be thrown for unsuccessful HTTP responses, - // so call it only after the response code/message are set to allow retrieving them. // TODO: This should allow accessing getErrorStream() for reading unsuccessful HTTP responses' output, // but this would be a breaking change for existing OC code. http.getInputStream