socket-error-symbol for interrupted-error is always EINTR even if errno was originally EAGAIN
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
SBCL |
New
|
Undecided
|
Unassigned |
Bug Description
DEFINE-
It goes wrong when there is a single condition for multiple errnos, like interrupted-error for EINTR and EAGAIN. Interrupted-error gets redefined, and the last redefinition's initform wins, providing the same socket-error-symbol for all kinds of interrupted-error.
While debugging an usocket issue https:/
Socket error in "connect": EINTR (NIL)
Due to redefinition of interrupted-error condition, I had no chance to see the original EAGAIN.
I'd propose a change in (defun socket-error ...) that would provide a :symbol argument to the newly-created condition, looked up by errno-to-symbol mapping (a new *symbols-for-errno* alist should probably be added).