Compatibilidade com outras plataformas ou compatibilidade com materiais antigos para evitar excessos ao usar snprintf()
e strncpy()
.
Michael Kerrisk explica no seu livro no página 1165 - Capítulo 57, Sockets: Domínio Unix:
SUSv3 doesn’t specify the size of the sun_path field. Early BSD implementations used 108 and 104 bytes, and one contemporary implementation (HP-UX 11) uses 92 bytes. Portable applications should code to this lower value, and use snprintf() or strncpy() to avoid buffer overruns when writing into this field.
Os caras do Docker até tiraram sarro, porque alguns soquetes tinham 110 caracteres:
É por isso que o LINUX usa um soquete de 108 caracteres. Isso poderia ser mudado? Claro. E essa é a razão pela qual, em primeiro lugar, essa limitação foi criada em sistemas operacionais mais antigos:
Citando a resposta:
It was to match the space available in a handy kernel data structure.
Quoting "The Design and Implementation of the 4.4BSD Operating System" by McKusick et. al. (page 369):
The memory management facilities revolve around a data structure called an mbuf. Mbufs, or memory buffers, are 128 bytes long, with 100 or 108 bytes of this space reserved for data storage.
Outros sistemas operacionais (soquetes de domínio unix):
- OpenBSD : 104 caracteres
- FreeBSD : 104 caracteres
- Mac OS X 10.9 : 104 caracteres