TWIMC:
вчерашняя проблема с listen оказалась очень странной: нельзя слишком часто открывать-закрывать unix сокеты. от этого что-то где-то ломается, и listen сокет закрывается
надо бы багрепорт написать, но непонятно, куда
TWIMC 2
история про закрывающийся listen сокет оказалась и сложнее, и проще
unix-сокеты были там у меня для отправки по ним tcp-соединений воркерам.
соответственно - делал я их не через net.Dial, а через unix.Socket, и отправлял через unix.Sendmsg
как паснуть именно хендлер соединения без unix.Sendmsg - я не знаю.
так вот - потом я делал unix-сокету syscall.Close, естественно
мистическим образом иногда (!) хендлер unix-сокета оказывался равен хендлеру listen-сокета.
и listener закрывался, понятное дело.
что с этим делать? у net.UnixConn появился сравнительно недавно метод SyscallConn, возвращающий syscall.RawConn, у которого, в свою очередь, есть Write(), позволяющий получить доступ к file descriptor.
и этот fd можно использовать для вызова unix.Sendmsg, да...