Skip to content

HTTP Download fails on Windows when url contains reserved character #1

@tlahn

Description

@tlahn

When downloading a file via http on windows, an IOException is thrown if the url of the file contains a character that is not valid for file names on windows.

Example:
sbuild http://downloads.sourceforge.net/project/trmi/trmi/trmi-0.1.4/trmi-0.1.4.zip?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Ftrmi%2Ffiles%2Ftrmi%2Ftrmi-0.1.4%2Ftrmi-0.1.4.zip%2Fdownload

Fails with: IOException: The filename, directory name, or volume label syntax is incorrect

StackTrace:

Exception in thread "main" java.io.IOException: The filename, directory name, or volume label syntax is incorrect
        at java.io.WinNTFileSystem.createFileExclusively(Native Method)
        at java.io.File.createTempFile(File.java:2024)
        at org.sbuild.plugins.http.HttpSupport$.download(HttpSupport.scala:42)
        at org.sbuild.plugins.http.HttpSchemeHandlerBase.download(HttpSchemeHandler.scala:69)
        at org.sbuild.plugins.http.HttpSchemeHandler.resolve(HttpSchemeHandler.scala:34)
        at org.sbuild.internal.BuildFileProject$$anonfun$4.apply(BuildFileProject.scala:204)
        at org.sbuild.internal.BuildFileProject$$anonfun$4.apply(BuildFileProject.scala:204)
        at org.sbuild.execute.TargetExecutor.liftedTree2$1(TargetExecutor.scala:428)
        at org.sbuild.execute.TargetExecutor.inner$1(TargetExecutor.scala:404)
        at org.sbuild.execute.TargetExecutor.preorderedDependenciesTree(TargetExecutor.scala:556)
        at org.sbuild.runner.SBuildRunner$$anonfun$18.apply(SBuildRunner.scala:587)
        at org.sbuild.runner.SBuildRunner$$anonfun$18.apply(SBuildRunner.scala:586)
        at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245)
        at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245)
        at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
        at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)
        at scala.collection.TraversableLike$class.map(TraversableLike.scala:245)
        at scala.collection.AbstractTraversable.map(Traversable.scala:104)
        at org.sbuild.runner.SBuildRunner.run(SBuildRunner.scala:586)
        at org.sbuild.runner.SBuildRunner.run(SBuildRunner.scala:303)
        at org.sbuild.runner.SBuildRunner$.main(SBuildRunner.scala:57)
        at org.sbuild.runner.SBuildRunner.main(SBuildRunner.scala)

Specific issue in this example is the '?' (questionmark) character after "trmi-0.1.4.zip" on creation of the temp file.

For more info on invalid characters see: http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247%28v=vs.85%29.aspx#naming_conventions

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions