Mercurial > urweb
comparison src/c/urweb.c @ 1708:e263dab7b579
Optimize code from last changeset a bit
author | Adam Chlipala <adam@chlipala.net> |
---|---|
date | Sun, 08 Apr 2012 16:29:28 -0400 |
parents | c05e2e4bdde7 |
children | 4df4521fbd3b |
comparison
equal
deleted
inserted
replaced
1707:c05e2e4bdde7 | 1708:e263dab7b579 |
---|---|
227 static pthread_t pruning_thread; | 227 static pthread_t pruning_thread; |
228 static int pruning_thread_initialized = 0; | 228 static int pruning_thread_initialized = 0; |
229 | 229 |
230 static client *find_client(unsigned id) { | 230 static client *find_client(unsigned id) { |
231 client *c; | 231 client *c; |
232 | 232 int i_am_pruner = pruning_thread_initialized && pthread_equal(pruning_thread, pthread_self()); |
233 if (!pruning_thread_initialized || !pthread_equal(pruning_thread, pthread_self())) pthread_mutex_lock(&clients_mutex); | 233 |
234 if (!i_am_pruner) pthread_mutex_lock(&clients_mutex); | |
234 | 235 |
235 if (id >= n_clients) { | 236 if (id >= n_clients) { |
236 if (!pruning_thread_initialized || !pthread_equal(pruning_thread, pthread_self())) pthread_mutex_unlock(&clients_mutex); | 237 if (!i_am_pruner) pthread_mutex_unlock(&clients_mutex); |
237 return NULL; | 238 return NULL; |
238 } | 239 } |
239 | 240 |
240 c = clients[id]; | 241 c = clients[id]; |
241 | 242 |
242 if (!pruning_thread_initialized || !pthread_equal(pruning_thread, pthread_self())) pthread_mutex_unlock(&clients_mutex); | 243 if (!i_am_pruner) pthread_mutex_unlock(&clients_mutex); |
243 return c; | 244 return c; |
244 } | 245 } |
245 | 246 |
246 static char *on_success = "HTTP/1.1 200 OK\r\n"; | 247 static char *on_success = "HTTP/1.1 200 OK\r\n"; |
247 static char *on_redirect = "HTTP/1.1 303 See Other\r\n"; | 248 static char *on_redirect = "HTTP/1.1 303 See Other\r\n"; |