diff options
| author | 2023-05-07 04:18:30 -0700 | |
|---|---|---|
| committer | 2023-05-07 04:18:30 -0700 | |
| commit | 578c94ba69c183ce9329c909cff415f6732885e6 (patch) | |
| tree | e564f86e794671807fe05c72d3013dd5b18bee03 /httpd.c | |
| parent | Merge pull request 'Fixed webfinger and curl issues' (#31) from poesty/snac2:... (diff) | |
| download | snac2-578c94ba69c183ce9329c909cff415f6732885e6.tar.gz snac2-578c94ba69c183ce9329c909cff415f6732885e6.tar.xz snac2-578c94ba69c183ce9329c909cff415f6732885e6.zip | |
Use named semaphores
Unnamed semaphores are not supported on macOS.
Diffstat (limited to 'httpd.c')
| -rw-r--r-- | httpd.c | 12 |
1 files changed, 8 insertions, 4 deletions
| @@ -299,7 +299,7 @@ void term_handler(int s) | |||
| 299 | static pthread_mutex_t job_mutex; | 299 | static pthread_mutex_t job_mutex; |
| 300 | 300 | ||
| 301 | /* semaphre to trigger job processing */ | 301 | /* semaphre to trigger job processing */ |
| 302 | static sem_t job_sem; | 302 | static sem_t *job_sem; |
| 303 | 303 | ||
| 304 | /* fifo of jobs */ | 304 | /* fifo of jobs */ |
| 305 | xs_list *job_fifo = NULL; | 305 | xs_list *job_fifo = NULL; |
| @@ -332,7 +332,7 @@ void job_post(const xs_val *job, int urgent) | |||
| 332 | } | 332 | } |
| 333 | 333 | ||
| 334 | /* ask for someone to attend it */ | 334 | /* ask for someone to attend it */ |
| 335 | sem_post(&job_sem); | 335 | sem_post(job_sem); |
| 336 | } | 336 | } |
| 337 | 337 | ||
| 338 | 338 | ||
| @@ -341,7 +341,7 @@ void job_wait(xs_val **job) | |||
| 341 | { | 341 | { |
| 342 | *job = NULL; | 342 | *job = NULL; |
| 343 | 343 | ||
| 344 | if (sem_wait(&job_sem) == 0) { | 344 | if (sem_wait(job_sem) == 0) { |
| 345 | /* lock the mutex */ | 345 | /* lock the mutex */ |
| 346 | pthread_mutex_lock(&job_mutex); | 346 | pthread_mutex_lock(&job_mutex); |
| 347 | 347 | ||
| @@ -352,6 +352,10 @@ void job_wait(xs_val **job) | |||
| 352 | /* unlock the mutex */ | 352 | /* unlock the mutex */ |
| 353 | pthread_mutex_unlock(&job_mutex); | 353 | pthread_mutex_unlock(&job_mutex); |
| 354 | } | 354 | } |
| 355 | |||
| 356 | if (!*job) { | ||
| 357 | sem_close(job_sem); | ||
| 358 | } | ||
| 355 | } | 359 | } |
| 356 | 360 | ||
| 357 | 361 | ||
| @@ -503,7 +507,7 @@ void httpd(void) | |||
| 503 | 507 | ||
| 504 | /* initialize the job control engine */ | 508 | /* initialize the job control engine */ |
| 505 | pthread_mutex_init(&job_mutex, NULL); | 509 | pthread_mutex_init(&job_mutex, NULL); |
| 506 | sem_init(&job_sem, 0, 0); | 510 | job_sem = sem_open("/job", O_CREAT, 0644, 0); |
| 507 | job_fifo = xs_list_new(); | 511 | job_fifo = xs_list_new(); |
| 508 | 512 | ||
| 509 | /* initialize sleep control */ | 513 | /* initialize sleep control */ |