1 diff -urN cvs-nserver-1.11.1.52.org/src/server.c cvs-nserver-1.11.1.52/src/server.c
2 --- cvs-nserver-1.11.1.52.org/src/server.c 2004-05-23 02:51:33.266858272 +0200
3 +++ cvs-nserver-1.11.1.52/src/server.c 2004-05-23 03:20:21.869070792 +0200
5 && strncmp (arg, name, cp - name) == 0)
7 timefield = strchr (cp + 1, '/') + 1;
8 - if (*timefield != '=')
9 + /* If the time field is not currently empty, then one of
10 + * serve_modified, serve_is_modified, & serve_unchanged were
11 + * already called for this file. We would like to ignore the
12 + * reinvocation silently or, better yet, exit with an error
13 + * message, but we just avoid the copy-forward and overwrite the
14 + * value from the last invocation instead. See the comment below
17 + if (*timefield == '/')
19 + /* Copy forward one character. Space was allocated for this
20 + * already in serve_entry(). */
21 cp = timefield + strlen (timefield);
23 while (cp > timefield)
24 @@ -1644,8 +1654,17 @@
30 + /* If *TIMEFIELD wasn't "/", we assume that it was because of
31 + * multiple calls to Is-Modified & Unchanged by the client and
32 + * just overwrite the value from the last call. Technically, we
33 + * should probably either ignore calls after the first or send the
34 + * client an error, since the client/server protocol specification
35 + * specifies that only one call to either Is-Modified or Unchanged
36 + * is allowed, but broken versions of WinCVS & TortoiseCVS rely on
43 @@ -1679,8 +1698,18 @@
44 && strncmp (arg, name, cp - name) == 0)
46 timefield = strchr (cp + 1, '/') + 1;
47 - if (!(timefield[0] == 'M' && timefield[1] == '/'))
48 + /* If the time field is not currently empty, then one of
49 + * serve_modified, serve_is_modified, & serve_unchanged were
50 + * already called for this file. We would like to ignore the
51 + * reinvocation silently or, better yet, exit with an error
52 + * message, but we just avoid the copy-forward and overwrite the
53 + * value from the last invocation instead. See the comment below
56 + if (*timefield == '/')
58 + /* Copy forward one character. Space was allocated for this
59 + * already in serve_entry(). */
60 cp = timefield + strlen (timefield);
62 while (cp > timefield)
63 @@ -1688,8 +1717,17 @@
69 + /* If *TIMEFIELD wasn't "/", we assume that it was because of
70 + * multiple calls to Is-Modified & Unchanged by the client and
71 + * just overwrite the value from the last call. Technically, we
72 + * should probably either ignore calls after the first or send the
73 + * client an error, since the client/server protocol specification
74 + * specifies that only one call to either Is-Modified or Unchanged
75 + * is allowed, but broken versions of WinCVS & TortoiseCVS rely on
81 if (alloc_pending (strlen (name) + 80))