diff options
| author | 2023-02-10 11:23:42 +0100 | |
|---|---|---|
| committer | 2023-02-10 11:23:42 +0100 | |
| commit | d4979d9403c7478baba2bb3c3bae313ee86ea17a (patch) | |
| tree | f134cb53a0b64b1b7f75c302b2f1fac195503fe9 /httpd.c | |
| parent | Fixed 32bit arch warnings when passing the thread id. (diff) | |
| download | snac2-d4979d9403c7478baba2bb3c3bae313ee86ea17a.tar.gz snac2-d4979d9403c7478baba2bb3c3bae313ee86ea17a.tar.xz snac2-d4979d9403c7478baba2bb3c3bae313ee86ea17a.zip | |
Added more job_fifo concurrency protections.
Diffstat (limited to 'httpd.c')
| -rw-r--r-- | httpd.c | 8 |
1 files changed, 6 insertions, 2 deletions
| @@ -257,7 +257,8 @@ void job_post(const xs_val *job) | |||
| 257 | pthread_mutex_lock(&job_mutex); | 257 | pthread_mutex_lock(&job_mutex); |
| 258 | 258 | ||
| 259 | /* add to the fifo */ | 259 | /* add to the fifo */ |
| 260 | job_fifo = xs_list_append(job_fifo, job); | 260 | if (job_fifo != NULL) |
| 261 | job_fifo = xs_list_append(job_fifo, job); | ||
| 261 | 262 | ||
| 262 | /* unlock the mutex */ | 263 | /* unlock the mutex */ |
| 263 | pthread_mutex_unlock(&job_mutex); | 264 | pthread_mutex_unlock(&job_mutex); |
| @@ -278,7 +279,8 @@ void job_wait(xs_val **job) | |||
| 278 | pthread_mutex_lock(&job_mutex); | 279 | pthread_mutex_lock(&job_mutex); |
| 279 | 280 | ||
| 280 | /* dequeue */ | 281 | /* dequeue */ |
| 281 | job_fifo = xs_list_shift(job_fifo, job); | 282 | if (job_fifo != NULL) |
| 283 | job_fifo = xs_list_shift(job_fifo, job); | ||
| 282 | 284 | ||
| 283 | /* unlock the mutex */ | 285 | /* unlock the mutex */ |
| 284 | pthread_mutex_unlock(&job_mutex); | 286 | pthread_mutex_unlock(&job_mutex); |
| @@ -465,7 +467,9 @@ void httpd(void) | |||
| 465 | for (n = 0; n < n_threads; n++) | 467 | for (n = 0; n < n_threads; n++) |
| 466 | pthread_join(threads[n], NULL); | 468 | pthread_join(threads[n], NULL); |
| 467 | 469 | ||
| 470 | pthread_mutex_lock(&job_mutex); | ||
| 468 | job_fifo = xs_free(job_fifo); | 471 | job_fifo = xs_free(job_fifo); |
| 472 | pthread_mutex_unlock(&job_mutex); | ||
| 469 | 473 | ||
| 470 | srv_log(xs_fmt("httpd stop %s:%d", address, port)); | 474 | srv_log(xs_fmt("httpd stop %s:%d", address, port)); |
| 471 | } | 475 | } |