Irritatingly, I realized while looking at this that by dropping the lock here, we are modifying the Message* in the writer thread without any protection. That would *normally* be okay, but because we manipulate the "sent" message list in a few circumstances (notably on pipe failure or reconnect), we could end up in a situation where a different thread is modifying the Message at the same time this one is. To protect against that, we'll also need to add a sent_lock protecting the sent list. *sigh* (It will at least be CPU-free thanks to futexes and the extreme improbability of ever actually seeing contention.)