Dag Johan, On 06 Apr 2012, at 08:58, Johan Brichau wrote:
Hi everyone,
I'm test-driving Pharo 1.4 beta and I'm getting an error loading any package from our webdav-based monticello repository. The error surfaces in the reading of the zipfile by monticello, but it seems the source of the problems is the replacement of sockets by Zinc sockets:
It seems that Zinc's "get" returns a ByteString instance when getting the file (in method MCHttpRepository>>#readStreamForFileNamed:do:) from the webdav volume. In contrast, when I'm loading a package from squeaksource, it returns a ByteArray.
The reading of the zip goes wrong because the stream is returning characters instead of bytes. So I guess the difference between the ByteString and the ByteArray is the source of that problem.
Maybe anyone knows why this happens? In the meantime... I'm digging deeper
Johan
Yes, this sounds familiar: Zn is much more strict at the HTTP level, most probably your server returns a text mime-type. Hence Zn interprets this as a string. Take one of your packages' URLs and do: ZnEasy get: 'http://my-web-dav/repo/Code.123.mcz'. and inspect the results, you'll see the mime type there. Compare it to, for example: ZnEasy get: 'http://mc.stfx.eu/ZincHTTPComponents/Zinc-HTTP-SvenVanCaekenberghe.254.mcz' The solution is to fix your server to use any binary mime-type for .mcz files (application/octet-stream or even application/x-monticello). Sven PS: Zinc does not 'replace sockets', it is an HTTP client using regular socket[streams].