Move the lock/send/unlock into this block? There is no point or'ing when events==0.

There should probably also be a `assert(events != 0 || FD_ISSET(s->int_fd, &sread))` check here.