Thu Jan 18 09:40:11 EST 2018 Slept from ten-thirty to six-thirty without waking. High of twenty-nine today and partly sunny. Stopped at Starbucks on my way in to work. Work: - 10 AM manager meeting Done. - Ask Roger if Florida has remote access logs from the post-hurricane period Done. - Investigate Asterisk file locking Some. Twenty-minute walk at lunch. A slightly bitter wind, but otherwise pleasant. The ground is drier underfoot than yesterday. $ grep -r -e 'flock(' $ grep -r -e 'fcntl(' $ grep -r -e 'AST_LOCK_TYPE' Mainly `asterisk/main/app.c` and `asterisk/main/asterisk.c`. static enum AST_LOCK_RESULT ast_lock_path_lockfile(const char *path) static enum AST_LOCK_RESULT ast_lock_path_flock(const char *path) static int ast_unlock_path_flock(const char *path) enum AST_LOCK_RESULT ast_lock_path(const char *path) int ast_unlock_path(const char *path) Asterisk seems to have two mutually exclusive lock modes: "lockfile" and "flock"; this appears to be a configurable setting in `/etc/asterisk.conf`. We haven't set it, so it defaults to `lockfile`. Chapter 55 of _The Linux Programming Interface_ describes file locking. Asterisk `flock` mode uses the `flock` system call. Asterisk `lockfile` mode (the default we're using) used the ancient `open` plus `unlink` technique described in section 55.7 of _TLPI_. _TLPI_ paints this as worse in every way than `flock` except perhaps backwards compatibility, so I'm not sure why it's the Asterisk default. Home: - Make Nginx pass the Let's Encrypt acme verification location unencrypted Done. - Blog about OpenBSD httpd charset No, but I blogged about Asterisk file locks. - Grocery shopping Done. Winter oppresses me less when, every so often, a few days of thaw break up the stretches of frigidness and snow. Breakfast: cafe latte, sausage and egg sandwich Lunch: gyro, coffee Dinner: chips