diff options
author | Stefan Siegl <stesie@brokenpipe.de> | 2004-10-17 20:07:45 +0000 |
---|---|---|
committer | Stefan Siegl <stesie@brokenpipe.de> | 2004-10-17 20:07:45 +0000 |
commit | 42a2d190380a9a145c12436f672e79baae0e2346 (patch) | |
tree | 750b5fe1da2b38dc0392639def844624eff9f6bf | |
parent | 454fcd9cc82942706abf235ebd6584325468f78b (diff) |
establish new connection when retrieving pre-HEAD revisions
-rw-r--r-- | cvs_files.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/cvs_files.c b/cvs_files.c index 6602dd518..f1176eb66 100644 --- a/cvs_files.c +++ b/cvs_files.c @@ -367,7 +367,19 @@ cvs_files_cache(struct netnode *file, struct revision *rev) * a goodthing(TM) ... */ - if(cvs_connect(&send, &recv)) + if(rev != file->revision) + { + /* we're not retrieving the head revision, thus it is likely that + * the HEAD revision was sent over the line in this session. However + * cvs server tends to transmit only one 'Mod-time' per file and + * session. + * + * therefore get a fresh connection ... + */ + if(cvs_connect_fresh(&send, &recv)) + return EIO; + } + else if(cvs_connect(&send, &recv)) return EIO; /* write out request header */ @@ -431,7 +443,7 @@ cvs_files_cache(struct netnode *file, struct revision *rev) memset(&tm, 0, sizeof(tm)); if(strptime(&buf[9], "%d %b %Y %T ", &tm)) t = mktime(&tm); - + rev->time = t; continue; } |