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