socklen_t is a strange typedef for the size of a struct sockaddr in accept(), getpeername(), and connect().

The reason for this typedef is that in BSD, those functions took an int*, and the POSIX people screwed it all up when they decided to make such arguments point to an integer of (potentially) another size, under a new typedef. But since we're dealing with pointers here, you can't change the size of the pointer type passed without severely breaking code written for BSD. So, this typedef is rather useless, as any sane library will have to make socklen_t the same as int.

I don't know what the current situation is with the POSIX folks, but I would hope they got their act together and made it require this typedef to be an int. I personally would deprecate it entirely and return to the tried and true int seen in the BSD prototypes.