Print

Print


Hi Wilko,

  I changed that function in order to handle any checksum size. 
Unfortunately I am not able to find a server/file giving me any checksum.

This is what I get from bbrprod01:

  041118 06:15:44 001 Xrd: SendGenCommand Server declared error 
3010:Check summing path 
'/kanga/prod/store/PRskims/R14/16.0.1a/AllEvents/23/AllEvents_2301.01.root' 
is disallowed.

Please, can you tell me something I can checksum somewhere?

I will commit the change when I am able to test it at least once. 
Differently from the former version, which I committed without any 
available server doing checksums at the time...

Fabrizio


Wilko Kroeger wrote:
> Hello Fabrizio
> 
> I tried the GetChecksum perl interface (on linux) with the
> latest version. It kind of works but produces a core after
> calling.
> The problem is in the usage of the shared buffer (char *sharedbuf)
> in XrdClientAdmin_c.cc.
> 
> XrdGetChecksum() uses this buffer to hold the checksum returned from the
> server (AFAIK). I think the core is produced if the buffer is to small.
> I changed in XrdGetChecksum()
> 
> from:
> memset(sharedbuf, 0, sizeof(sharedbuf));
> adminst->GetChecksum((kXR_char *)path, (kXR_char *)sharedbuf);
> 
> to:
> SharedBufRealloc(30);
> memset(sharedbuf, 0, 30);
> adminst->GetChecksum((kXR_char *)path, (kXR_char *)sharedbuf);
> 
> and then it works fine. Is there a better way to allocate the buffer?
> I just choose a size (=30) that is safe for our purpose but it isn't
> guaranteed that it will work if a different checksum algorithm is used
> (Also not only the checksum but also a string is returned e.g.:
> crc32 3140090365)
> 
> Cheers,
>    Wilko
>