author | Lars Hjemli <hjemli@gmail.com> | 2006-12-11 11:10:12 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2006-12-11 11:10:12 (UTC) |
commit | 318d106300102c19d114a4ea89265b0a4060d9cb (patch) (unidiff) | |
tree | 3752575abec74ee0a2b544e36e3cc8f9cdfa1e66 /cgit.h | |
parent | a581ed8d6c15b0734b082fbadf0a907c2b170423 (diff) | |
download | cgit-318d106300102c19d114a4ea89265b0a4060d9cb.zip cgit-318d106300102c19d114a4ea89265b0a4060d9cb.tar.gz cgit-318d106300102c19d114a4ea89265b0a4060d9cb.tar.bz2 |
Avoid infinite loops in caching layer
Add a global variable, cgit_max_lock_attemps, to avoid the possibility of
infinite loops when failing to acquire a lockfile. This could happen on
broken setups or under crazy server load.
Incidentally, this also fixes a lurking bug in cache_lock() where an
uninitialized returnvalue was used.
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
-rw-r--r-- | cgit.h | 1 |
1 files changed, 1 insertions, 0 deletions
@@ -10,32 +10,33 @@ typedef void (*configfn)(const char *name, const char *value); | |||
10 | 10 | ||
11 | struct cacheitem { | 11 | struct cacheitem { |
12 | char *name; | 12 | char *name; |
13 | struct stat st; | 13 | struct stat st; |
14 | int ttl; | 14 | int ttl; |
15 | int fd; | 15 | int fd; |
16 | }; | 16 | }; |
17 | 17 | ||
18 | extern char *cgit_root; | 18 | extern char *cgit_root; |
19 | extern char *cgit_root_title; | 19 | extern char *cgit_root_title; |
20 | extern char *cgit_css; | 20 | extern char *cgit_css; |
21 | extern char *cgit_logo; | 21 | extern char *cgit_logo; |
22 | extern char *cgit_logo_link; | 22 | extern char *cgit_logo_link; |
23 | extern char *cgit_virtual_root; | 23 | extern char *cgit_virtual_root; |
24 | extern char *cgit_cache_root; | 24 | extern char *cgit_cache_root; |
25 | 25 | ||
26 | extern int cgit_max_lock_attempts; | ||
26 | extern int cgit_cache_root_ttl; | 27 | extern int cgit_cache_root_ttl; |
27 | extern int cgit_cache_repo_ttl; | 28 | extern int cgit_cache_repo_ttl; |
28 | extern int cgit_cache_dynamic_ttl; | 29 | extern int cgit_cache_dynamic_ttl; |
29 | extern int cgit_cache_static_ttl; | 30 | extern int cgit_cache_static_ttl; |
30 | extern int cgit_cache_max_create_time; | 31 | extern int cgit_cache_max_create_time; |
31 | 32 | ||
32 | extern char *cgit_repo_name; | 33 | extern char *cgit_repo_name; |
33 | extern char *cgit_repo_desc; | 34 | extern char *cgit_repo_desc; |
34 | extern char *cgit_repo_owner; | 35 | extern char *cgit_repo_owner; |
35 | 36 | ||
36 | extern int cgit_query_has_symref; | 37 | extern int cgit_query_has_symref; |
37 | extern int cgit_query_has_sha1; | 38 | extern int cgit_query_has_sha1; |
38 | 39 | ||
39 | extern char *cgit_querystring; | 40 | extern char *cgit_querystring; |
40 | extern char *cgit_query_repo; | 41 | extern char *cgit_query_repo; |
41 | extern char *cgit_query_page; | 42 | extern char *cgit_query_page; |