2 --- src/exitcode.h 2 Feb 2003 12:24:29 -0000 1.13
3 +++ src/exitcode.h 2 Apr 2003 02:42:27 -0000
8 + EXIT_VERSION_REQUEST = 001,
9 EXIT_DISTCC_FAILED = 100, /**< General failure */
10 EXIT_BAD_ARGUMENTS = 101,
11 EXIT_BIND_FAILED = 102,
13 --- src/rpc.c 27 Mar 2003 04:45:49 -0000 1.25
14 +++ src/rpc.c 2 Apr 2003 02:42:27 -0000
18 if (memcmp(buf, expected, 4)) {
19 + if (memcmp(expected, "DIST", 4) == 0 && memcmp(buf, "QVER", 4) == 0)
20 + return EXIT_VERSION_REQUEST;
21 rs_log_error("mismatch on token %s", expected);
22 return EXIT_PROTOCOL_ERROR;
25 --- src/serve.c 31 Mar 2003 08:36:37 -0000 1.83
26 +++ src/serve.c 2 Apr 2003 02:42:27 -0000
28 static int dcc_r_request_header(int ifd)
33 - if (dcc_r_token_int(ifd, "DIST", &vers) == -1) {
34 + if ((ret = dcc_r_token_int(ifd, "DIST", &vers)) != 0) {
35 + if (ret == EXIT_VERSION_REQUEST)
37 rs_log_error("client did not provide distcc magic fairy dust");
38 return EXIT_PROTOCOL_ERROR;
42 if ((ret = dcc_r_request_header(netfd))
43 || (ret = dcc_r_argv(netfd, &argv))
44 - || (ret = dcc_scan_args(argv, &orig_input, &orig_output, &argv)))
45 + || (ret = dcc_scan_args(argv, &orig_input, &orig_output, &argv))) {
46 + if (ret == EXIT_VERSION_REQUEST) {
47 + rs_trace("send %s", PACKAGE_VERSION);
48 + return dcc_writex(netfd, PACKAGE_VERSION, strlen(PACKAGE_VERSION));
53 /* TODO: Make sure cleanup is called in case of error.