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";