From: Kevin R. <kp...@ma...> - 2007-05-22 12:07:27
|
On May 22, 2007, at 3:41, Erik Huelsmann wrote: > On 5/22/07, Kevin Reid <kp...@ma...> wrote: >> I object to calling this a bug for the non-blocking case. The >> current interface is a direct mapping of the underlying system >> call, which is explicitly specified to "fail" with EINPROGRESS. > > Well, as you point out, the mapping would have been exact iff the > error raised wouldn't have been generic, but specific (as is the > error code). I was going to point out that it's possible to find the errno, but I see that I used internals to do so, so it doesn't count very well: (defun in-progress-socket-error-p (error) (and (typep error 'socket-error) (eql (sb-bsd-sockets::socket-error-errno error) #.sb-posix:einprogress))) (handler-case ... ((satisfies in-progress-socket-error-p) () ...) (socket-error (c) ...)) Given this, I retract my claim of this being an incompatible change, since internals are necessary to distinguish EINPROGRESS. -- Kevin Reid <http://homepage.mac.com/kpreid/> |