*** tcp.scm.old Wed Aug 10 01:18:13 2005 --- tcp.scm Wed Aug 10 01:20:15 2005 *************** *** 415,418 **** --- 415,428 ---- (eq? 1 f) ) ) + (define get-socket-error + (foreign-lambda* int ((int socket)) + "int err, optlen;" + "optlen = sizeof(err);" + "if (getsockopt(socket, SOL_SOCKET, SO_ERROR, &err, (socklen_t *)&optlen) == -1)" + "return(-1);" + "return(err);")) + + (define general-strerror (foreign-lambda c-string "strerror" int)) + (define (tcp-connect host . more) (let ([port (:optional more #f)]) *************** *** 448,451 **** --- 458,466 ---- (loop) ) ) ) (fail) ) ) + (let ((err (get-socket-error s))) + (cond ((= err -1) + (##sys#signal-hook #:network-error 'tcp-connect (##sys#string-append "getsockopt() failed - " strerror))) + ((> err 0) + (##sys#signal-hook #:network-error 'tcp-connect (##sys#string-append "can not create socket - " (general-strerror err)))))) (##net#io-ports s) ) ) )