version 1.3, 2019/02/10 23:43:31 |
version 1.4, 2019/02/11 19:18:36 |
|
|
LOG2(&sess, "connected: %s, %s", src[i].ip, f->host); |
LOG2(&sess, "connected: %s, %s", src[i].ip, f->host); |
|
|
(void)snprintf(buf, sizeof(buf), "@RSYNCD: %d", sess.lver); |
(void)snprintf(buf, sizeof(buf), "@RSYNCD: %d", sess.lver); |
if ( ! io_write_line(&sess, sd, buf)) { |
if (!io_write_line(&sess, sd, buf)) { |
ERRX1(&sess, "io_write_line"); |
ERRX1(&sess, "io_write_line"); |
goto out; |
goto out; |
} |
} |
|
|
LOG2(&sess, "requesting module: %s, %s", f->module, f->host); |
LOG2(&sess, "requesting module: %s, %s", f->module, f->host); |
|
|
if ( ! io_write_line(&sess, sd, f->module)) { |
if (!io_write_line(&sess, sd, f->module)) { |
ERRX1(&sess, "io_write_line"); |
ERRX1(&sess, "io_write_line"); |
goto out; |
goto out; |
} |
} |
|
|
|
|
for (;;) { |
for (;;) { |
for (i = 0; i < sizeof(buf); i++) { |
for (i = 0; i < sizeof(buf); i++) { |
if ( ! io_read_byte(&sess, sd, &byte)) { |
if (!io_read_byte(&sess, sd, &byte)) { |
ERRX1(&sess, "io_read_byte"); |
ERRX1(&sess, "io_read_byte"); |
goto out; |
goto out; |
} |
} |
|
|
i = 1; /* rsync... */ |
i = 1; /* rsync... */ |
|
|
for ( ; NULL != args[i]; i++) |
for ( ; NULL != args[i]; i++) |
if ( ! io_write_line(&sess, sd, args[i])) { |
if (!io_write_line(&sess, sd, args[i])) { |
ERRX1(&sess, "io_write_line"); |
ERRX1(&sess, "io_write_line"); |
goto out; |
goto out; |
} |
} |
if ( ! io_write_byte(&sess, sd, '\n')) { |
if (!io_write_byte(&sess, sd, '\n')) { |
ERRX1(&sess, "io_write_line"); |
ERRX1(&sess, "io_write_line"); |
goto out; |
goto out; |
} |
} |
|
|
|
|
/* Protocol exchange: get the random seed. */ |
/* Protocol exchange: get the random seed. */ |
|
|
if ( ! io_read_int(&sess, sd, &sess.seed)) { |
if (!io_read_int(&sess, sd, &sess.seed)) { |
ERRX1(&sess, "io_read_int"); |
ERRX1(&sess, "io_read_int"); |
goto out; |
goto out; |
} |
} |
|
|
assert(FARGS_RECEIVER == f->mode); |
assert(FARGS_RECEIVER == f->mode); |
|
|
LOG2(&sess, "client starting receiver: %s", f->host); |
LOG2(&sess, "client starting receiver: %s", f->host); |
if ( ! rsync_receiver(&sess, sd, sd, f->sink)) { |
if (!rsync_receiver(&sess, sd, sd, f->sink)) { |
ERRX1(&sess, "rsync_receiver"); |
ERRX1(&sess, "rsync_receiver"); |
goto out; |
goto out; |
} |
} |