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].

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to