Hi Ian -
[cc: vm-dev for the usual suspects]
Okay, after looking through the changes it seems like most of the implementation should be fairly straightforward. There are a couple of questions I have about various areas though:
* Concurrent lookups: It appears that the resolver can't be used concurrently, is this right? (I had hoped we'd get rid of it in this round) Also, it seems that the image side code isn't currently serializing requests properly, in particular when getting the "next" address information etc. Is this correct or am I missing something?
* "Local" addresses: What exactly does the "local" address family mean? In your code you seem to simply stat() the input - are these files? If they are files, why would one use sockets to access them (we have a FilePlugin after all ;-) and what security implications does that have?
* Socket address lifetime: Why are socket addresses bound to the current session? It seems to me that the client should be able to decide for how long to cache an address. It's probably a good idea to dump addresses when the system gets restarted but I don't see why this would be *necessary*. And if it isn't necessary, I'd prefer to leave that option to the client.
* Address families: Does it make sense to add AF_IRDA (infra-red) and AF_BTM (bluetooth) as available address families? Windows supports them but I don't know about the Unixes. And while we're at it: How about SOCK_RDM (reliable datagram) and SOCK_SEQPACKET (pseudo-stream) sockets? Croquet could sure use those if supported ;-)
Cheers, - Andreas