using checksum_init. This fixes an authentication problem in server
mode (as pointed out by Craig Barratt).
SIVAL(input, 20, tv.tv_usec);
SIVAL(input, 24, getpid());
SIVAL(input, 20, tv.tv_usec);
SIVAL(input, 24, getpid());
sum_update(input, sizeof input);
sum_end(challenge);
}
sum_update(input, sizeof input);
sum_end(challenge);
}
sum_update(in, strlen(in));
sum_update(challenge, strlen(challenge));
sum_end(buf);
sum_update(in, strlen(in));
sum_update(challenge, strlen(challenge));
sum_end(buf);
static char sumrbuf[CSUM_CHUNK];
static struct mdfour md;
static char sumrbuf[CSUM_CHUNK];
static struct mdfour md;
{
char s[4];
mdfour_begin(&md);
{
char s[4];
mdfour_begin(&md);
- sumresidue=0;
- SIVAL(s,0,checksum_seed);
- sum_update(s,4);
+ sumresidue = 0;
+ SIVAL(s, 0, seed);
+ sum_update(s, 4);
extern int verbose;
extern int am_server;
extern int do_progress;
extern int verbose;
extern int am_server;
extern int do_progress;
+extern int checksum_seed;
typedef unsigned short tag;
typedef unsigned short tag;
matches = 0;
data_transfer = 0;
matches = 0;
data_transfer = 0;
+ sum_init(checksum_seed);
if (len > 0 && s->count>0) {
build_hash_table(s);
if (len > 0 && s->count>0) {
build_hash_table(s);
extern int ignore_errors;
extern int orig_umask;
extern int keep_partial;
extern int ignore_errors;
extern int orig_umask;
extern int keep_partial;
+extern int checksum_seed;
static void delete_one(char *fn, int is_dir)
{
static void delete_one(char *fn, int is_dir)
{
read_sum_head(f_in, &sum);
read_sum_head(f_in, &sum);
+ sum_init(checksum_seed);
while ((i = recv_token(f_in, &data)) != 0) {
if (do_progress)
while ((i = recv_token(f_in, &data)) != 0) {
if (do_progress)