I use openssl 0.9.8 on SPARC Solaris 10 and try to send a text message to a 
server running on Windows XP Professional SP3 with activated firewall using a 
non-blocking socket with BIO_puts().

The write to the socket returns with ENOTCONN which is a non-fatal error 
because BIO_should_retry() returns true. After some tries the client side 
receives a SIGPIPE and crashes.

The truss command shows the following output at the client side:
428:    so_socket(PF_INET, SOCK_STREAM, IPPROTO_TCP, "", SOV_DEFAULT) = 7
428:    ioctl(7, FIONBIO, 0xFFBFDC6C)                   = 0
428:    setsockopt(7, SOL_SOCKET, SO_KEEPALIVE, 0xFFBFDCE4, 4, SOV_DEFAULT) = 0
428:    connect(7, 0x003CEF58, 16, SOV_DEFAULT)         Err#150 EINPROGRESS
428:    access("/var/opt/asdis/log", F_OK)              = 0
428:    umask(077)                                      = 07
428:    open64("/var/opt/asdis/log/AsdisClient.log", O_RDWR|O_APPEND|O_CREAT, 06
00) = 8
428:    umask(07)                                       = 077
428:    fchmod(8, 0664)                                 = 0
428:    getuid()                                        = 0 [0]
428:    time()                                          = 1227860564
428:    fstat64(8, 0xFFBF9F40)                          = 0
428:    write(8, " < 0 7 > N o v   2 8   0".., 65)      = 65
428:    close(8)                                        = 0
425:    brk(0x0003AE00)                                 = 0
425:    write(1, " a s d s t a r t :   A S".., 40)      = 40
425:    brk(0x0003AC00)                                 = 0
425:    brk(0x0003AA00)                                 = 0
425:    _exit(0)
428:    pollsys(0xFFBFDC68, 1, 0xFFBFDD10, 0x00000000) (sleeping...)
428:    pollsys(0xFFBFDC68, 1, 0xFFBFDD10, 0x00000000)  = 0
428:    access("/var/opt/asdis/log", F_OK)              = 0
428:    umask(077)                                      = 07
428:    open64("/var/opt/asdis/log/AsdisClient.log", O_RDWR|O_APPEND|O_CREAT, 06
00) = 8
428:    umask(07)                                       = 077
428:    fchmod(8, 0664)                                 = 0
428:    getuid()                                        = 0 [0]
428:    time()                                          = 1227860574
428:    fstat64(8, 0xFFBF9F40)                          = 0
428:    write(8, " < 0 7 > N o v   2 8   0".., 68)      = 68
428:    close(8)
428:    getsockopt(7, SOL_SOCKET, SO_ERROR, 0xFFBFDC6C, 0xFFBFDC68, SOV_DEFAULT)
 = 0
428:    write(7, " A S D C L I E N T E V E".., 16)      Err#134 ENOTCONN
428:    access("/var/opt/asdis/log", F_OK)              = 0
428:    umask(077)                                      = 07
428:    open64("/var/opt/asdis/log/AsdisClient.log", O_RDWR|O_APPEND|O_CREAT, 06
00) = 8
428:    umask(07)                                       = 077
428:    fchmod(8, 0664)                                 = 0
428:    getuid()                                        = 0 [0]
428:    time()                                          = 1227860574
428:    fstat64(8, 0xFFBF9F40)                          = 0
428:    write(8, " < 0 7 > N o v   2 8   0".., 65)      = 65
428:    close(8)                                        = 0
428:    pollsys(0xFFBFDC68, 1, 0xFFBFDD10, 0x00000000) (sleeping...)
428:    pollsys(0xFFBFDC68, 1, 0xFFBFDD10, 0x00000000)  = 0
428:    access("/var/opt/asdis/log", F_OK)              = 0
428:    umask(077)                                      = 07
428:    open64("/var/opt/asdis/log/AsdisClient.log", O_RDWR|O_APPEND|O_CREAT, 06
00) = 8
428:    umask(07)                                       = 077
428:    fchmod(8, 0664)                                 = 0
428:    getuid()                                        = 0 [0]
428:    time()                                          = 1227860584
428:    fstat64(8, 0xFFBF9F40)                          = 0
428:    write(8, " < 0 7 > N o v   2 8   0".., 68)      = 68
428:    close(8)                                        = 0
428:    write(7, " A S D C L I E N T E V E".., 16)      Err#134 ENOTCONN
428:    access("/var/opt/asdis/log", F_OK)              = 0
428:    umask(077)                                      = 07

... etc.

428:    open64("/var/opt/asdis/log/AsdisClient.log", O_RDWR|O_APPEND|O_CREAT, 06
00) = 8
428:    umask(07)                                       = 077
428:    fchmod(8, 0664)                                 = 0
428:    getuid()                                        = 0 [0]
428:    time()                                          = 1227860784
428:    fstat64(8, 0xFFBF9F40)                          = 0
428:    write(8, " < 0 7 > N o v   2 8   0".., 68)      = 68
428:    close(8)                                        = 0
428:    write(7, " A S D C L I E N T E V E".., 16)      Err#134 ENOTCONN
428:    access("/var/opt/asdis/log", F_OK)              = 0
428:    umask(077)                                      = 07
428:    open64("/var/opt/asdis/log/AsdisClient.log", O_RDWR|O_APPEND|O_CREAT, 06
00) = 8
428:    umask(07)                                       = 077
428:    fchmod(8, 0664)                                 = 0
428:    getuid()                                        = 0 [0]
428:    time()                                          = 1227860784
428:    fstat64(8, 0xFFBF9F40)                          = 0
428:    write(8, " < 0 7 > N o v   2 8   0".., 65)      = 65
428:    close(8)                                        = 0
428:    pollsys(0xFFBFDC68, 1, 0xFFBFDD10, 0x00000000) (sleeping...)
428:    pollsys(0xFFBFDC68, 1, 0xFFBFDD10, 0x00000000)  = 1
428:    access("/var/opt/asdis/log", F_OK)              = 0
428:    umask(077)                                      = 07
428:    open64("/var/opt/asdis/log/AsdisClient.log", O_RDWR|O_APPEND|O_CREAT, 06
00) = 8
428:    umask(07)                                       = 077
428:    fchmod(8, 0664)                                 = 0
428:    getuid()                                        = 0 [0]
428:    time()                                          = 1227860789
428:    fstat64(8, 0xFFBF9F40)                          = 0
428:    write(8, " < 0 7 > N o v   2 8   0".., 68)      = 68
428:    close(8)                                        = 0
428:    write(7, " A S D C L I E N T E V E".., 16)      Err#32 EPIPE
428:        Received signal #13, SIGPIPE [default]
428:          siginfo: SIG#0

The error ENOTCONN is considered as to be a non-fatal error, see int 
BIO_sock_non_fatal_error(int err) in bss_sock.c/#245ff. 

Is this an error?

Mit freundlichen Grüßen/Best regards
Michael Krüger
--
Dipl.-Math. Michael Krüger

Office:   +49 30 20631 611
Fax:      +49 30 20631 199
E-Fax:    +49 30 20631 44 611
Email:    [EMAIL PROTECTED]
Web:      www.asdis.de

ASDIS Software GmbH
Neue Grünstraße 25, 10179 Berlin (Sitz der Gesellschaft)

Registergericht: Amtsgericht Charlottenburg/Bln. (HRB 114434)
Geschäftsführerin: Petra-Maria Grohs-Frihs

ASDIS. Managing Complexity

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       openssl-dev@openssl.org
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to