In other words, it would be possible to provide an API (e.g., a socket option that could be set) which would abort the connection if it receives a soft error in SYN-SENT/RECEIVED states.
This is trivial at the application level: simply turn off the "soft errors are hard" API once connect() has completed. I think embedding SYN-SENT/RECEIVED knowledge in any kernel/user API is a bad idea.
This assumes that all address cycling will happen below the application, which is doubtful.Another alternative is to make the change by default, but provide the identical API (e.g., a socket option) which would prevent the address cycling --
-- Fernando Gont e-mail: fernando@gont.com.ar || fgont@acm.org