Index: ossp-pkg/sa/ChangeLog RCS File: /v/ossp/cvs/ossp-pkg/sa/ChangeLog,v co -q -kk -p'1.1' '/v/ossp/cvs/ossp-pkg/sa/ChangeLog,v' | diff -u /dev/null - -L'ossp-pkg/sa/ChangeLog' 2>/dev/null --- ossp-pkg/sa/ChangeLog +++ - 2024-04-27 09:02:41.123605220 +0200 @@ -0,0 +1,54 @@ + _ ___ ____ ____ ____ + |_|_ _ / _ \/ ___/ ___|| _ \ ___ __ _ + _|_||_| | | | \___ \___ \| |_) | / __|/ _` | + |_||_|_| | |_| |___) |__) | __/ \__ \ (_| | + |_|_|_| \___/|____/____/|_| |___/\__,_| + + OSSP sa - Socket Abstraction + + CHANGELOG + + This is a list of all changes to OSSP sa. + For a more brief summary please have a look at the NEWS file. + + Changes between 0.9.2 and 0.9.3 (11-Oct-2002 to xx-Oct-2002) + + o Finished writing the documentation (manual page sa.pod). + [Ralf S. Engelschall] + + o Fixed return code and error handling in sa_read(3). + [Ulrich Dessauer ] + + o Upgraded build environment to GNU autoconf 2.54 and GNU libtool 1.4.3. + [Ralf S. Engelschall] + + o Source tree cleanups and polishing. + [Ralf S. Engelschall] + + Changes between 0.9.1 and 0.9.2 (15-Mar-2002 to 11-Oct-2002) + + o Check for inet_addr, inet_aton, inet_pton, inet_ntoa and inet_ntop + under configure time and use this to use reasonable fallbacks for + the underlying usage of address manipulation functions. + [Ralf S. Engelschall] + + o Upgraded build environment to GNU shtool 1.6.1. + [Ralf S. Engelschall] + + o Fixed "make realclean" target. + [Ralf S. Engelschall] + + Changes between 0.9.0 and 0.9.1 (31-Jan-2002 to 15-Mar-2002) + + o Removed gcc -ggdb3 option under --enable-debug. + [Ralf S. Engelschall] + + o Upgraded build environment to GNU autoconf 2.53 and GNU shtool 1.6.0. + [Ralf S. Engelschall] + + o Fixed internal snprintf implementation + [Ralf S. Engelschall] + + o Fixed internal test suite library + [Ralf S. Engelschall] + Index: ossp-pkg/sa/NEWS RCS File: /v/ossp/cvs/ossp-pkg/sa/NEWS,v rcsdiff -q -kk '-r1.1' '-r1.2' -u '/v/ossp/cvs/ossp-pkg/sa/NEWS,v' 2>/dev/null --- NEWS 2002/03/15 10:50:08 1.1 +++ NEWS 2002/10/26 17:59:30 1.2 @@ -1,13 +1,13 @@ + _ ___ ____ ____ ____ + |_|_ _ / _ \/ ___/ ___|| _ \ ___ __ _ + _|_||_| | | | \___ \___ \| |_) | / __|/ _` | + |_||_|_| | |_| |___) |__) | __/ \__ \ (_| | + |_|_|_| \___/|____/____/|_| |___/\__,_| - NEWS - ==== - - This is a list of user-visible and/or major changes to OSSP sa. - For more details please have a look at the ChangeLog file. + OSSP sa - Socket Abstraction - Changes between 0.9.0 and 0.9.1 (31-Jan-2002 to 15-Mar-2002) + NEWS - o upgraded build environment to autoconf 2.53 and shtool 1.6.0 - o fixed internal snprintf implementation - o fixed internal test suite library + This is a list of major changes to OSSP sa. For more detailed + change descriptions, please have a look at the ChangeLog file. Index: ossp-pkg/sa/README RCS File: /v/ossp/cvs/ossp-pkg/sa/README,v rcsdiff -q -kk '-r1.6' '-r1.7' -u '/v/ossp/cvs/ossp-pkg/sa/README,v' 2>/dev/null --- README 2002/10/26 15:45:32 1.6 +++ README 2002/10/26 17:59:30 1.7 @@ -1,10 +1,11 @@ - ___ __ _ - / __|/ _` | - \__ \ (_| | - |___/\__,_| + _ ___ ____ ____ ____ + |_|_ _ / _ \/ ___/ ___|| _ \ ___ __ _ + _|_||_| | | | \___ \___ \| |_) | / __|/ _` | + |_||_|_| | |_| |___) |__) | __/ \__ \ (_| | + |_|_|_| \___/|____/____/|_| |___/\__,_| OSSP sa - Socket Abstraction - Version 0.9.1 (15-Mar-2002) + Version 0.9.3 (26-Oct-2002) ABSTRACT Index: ossp-pkg/sa/THANKS RCS File: /v/ossp/cvs/ossp-pkg/sa/THANKS,v co -q -kk -p'1.1' '/v/ossp/cvs/ossp-pkg/sa/THANKS,v' | diff -u /dev/null - -L'ossp-pkg/sa/THANKS' 2>/dev/null --- ossp-pkg/sa/THANKS +++ - 2024-04-27 09:02:41.134257557 +0200 @@ -0,0 +1,23 @@ + _ ___ ____ ____ ____ + |_|_ _ / _ \/ ___/ ___|| _ \ ___ __ _ + _|_||_| | | | \___ \___ \| |_) | / __|/ _` | + |_||_|_| | |_| |___) |__) | __/ \__ \ (_| | + |_|_|_| \___/|____/____/|_| |___/\__,_| + + OSSP sa - Socket Abstraction + + THANKS + + Credit has to be given to the following sponsors for contributing + hardware, network and manpower resources (in alphabetical order): + + o Cable & Wireless Deutschland GmbH + + + Credit has to be given to the following people who contributed ideas, + bugfixes, hints, gave platform feedback, etc. (in alphabetical order): + + o Ulrich Dessauer + o Michael van Elst + o Thomas Lotterer + Index: ossp-pkg/sa/TODO RCS File: /v/ossp/cvs/ossp-pkg/sa/TODO,v rcsdiff -q -kk '-r1.38' '-r1.39' -u '/v/ossp/cvs/ossp-pkg/sa/TODO,v' 2>/dev/null --- TODO 2002/10/26 15:45:32 1.38 +++ TODO 2002/10/26 17:59:30 1.39 @@ -1,79 +1,89 @@ + _ ___ ____ ____ ____ + |_|_ _ / _ \/ ___/ ___|| _ \ ___ __ _ + _|_||_| | | | \___ \___ \| |_) | / __|/ _` | + |_||_|_| | |_| |___) |__) | __/ \__ \ (_| | + |_|_|_| \___/|____/____/|_| |___/\__,_| -TODO ----- + OSSP sa - Socket Abstraction -- more test cases to cover full API and especially the client/server usage -- more documentation to fully describe API + TODO + ---- -CANDO ------ + o what about actually written bytes in case of sa_writef? -o provide "satool", a command line interface to the OSSP sa API. - Can optionally use readline or libedit, etc. - -o support for SSL/TLS via small abstraction layer on top of OpenSSL and - gnutls libraries. - -o Consistently use PF_XXX instead of AF_XXX whenever not directly - address related things are done in order to even closer conform to POSIX. - -o Support for newer DNS Resolving Functions. - - In IPv6 land there are usually the newer DNS resolving functions - getaddrinfo(3) and getnameinfo(3). Perhaps we should support these in - favor of gethostbyname(3) and gethostbyaddr(3) because the chance is - higher that they support IPv6 in case we are in IPv6 land. - -o DNS Resolving and multiple results. - - On DNS resolving name, multiple result addresses can be returned. Either - because of Round-Robin entries, multi-homed hosts or because of hosts - talking both IPv4 and IPv6, etc. Each address has to be tried on - socket+connect. What to do? For some hints see: - http://www.v6.wide.ad.jp/Presentations/ai3-penang0010-v6programming/mgp00015.html - -o Nagle's Algorithm and Flushing of Output Buffers. - - The kernel performs Nagle's Algorithm (see RFC 896 and search for "nagle - algorithm" on www.whatis.com [currently - http://searchnetworking.techtarget.com/sDefinition/0,,sid7_gci754347,00.html] - on his internal output buffers. Although we flush our user-space output - buffers only if we really perform a read(2) (and not if the read is going to - be served entirely from the local buffer) this does not mean that really - every character the remote has already sent is also already read by us. - Because the kernel also has a read buffer. Optimal behaviour would be that - we flush out output buffer only if the read(2) would block. OTOH flushing - out buffers means performing a write(2) and this again is buffered in the - kernel, too. So performing an optimal read->write->read->write->... sequence - is very complex and non-trivial to implement. Especially because even using - Nagle's Algorithm always is not the right choice (see - http://www.w3.org/Protocols/HTTP/Performance/Nagle/ for details), especially - when it comes to pipelining protocols. - -o Support for writev(2). - - This can be done by internally switching to always use writev(2), - providing an emulation for writev(2) ala Pth and by basing the write - calls always on writev. - -o Kernel Read/Write Buffer Adjustments. - - BSD Sockets usually provide (see setsockopt(2)): - - SO_SNDBUF set buffer size for output - SO_RCVBUF set buffer size for input - SO_SNDLOWAT set minimum count for output - SO_RCVLOWAT set minimum count for input - - This would mean that we could also allow the control - of the kernel buffers via - - SA_BUFFER_KREAD - SA_BUFFER_KWRITE - - Unfortunately the whole kernel buffer issue is very complex, because - according to STEVENS there are both minimum and maximum sizes and both - borders heavily depend on the currently used protocol (TCP or UDP) and - the MTU of the underlying network, etc. This all together seems like - opening a can of worms if we provide SA_BUFFER_K{READ,WRITE}. + o more test cases to cover full API and especially the client/server usage + + o more documentation to fully describe API + + CANDO + ----- + + o provide "satool", a command line interface to the OSSP sa API. + Can optionally use readline or libedit, etc. + + o support for SSL/TLS via small abstraction layer on top of OpenSSL and + gnutls libraries. + + o Consistently use PF_XXX instead of AF_XXX whenever not directly + address related things are done in order to even closer conform to POSIX. + + o Support for newer DNS Resolving Functions. + + In IPv6 land there are usually the newer DNS resolving functions + getaddrinfo(3) and getnameinfo(3). Perhaps we should support these in + favor of gethostbyname(3) and gethostbyaddr(3) because the chance is + higher that they support IPv6 in case we are in IPv6 land. + + o DNS Resolving and multiple results. + + On DNS resolving name, multiple result addresses can be returned. Either + because of Round-Robin entries, multi-homed hosts or because of hosts + talking both IPv4 and IPv6, etc. Each address has to be tried on + socket+connect. What to do? For some hints see: + http://www.v6.wide.ad.jp/Presentations/ai3-penang0010-v6programming/mgp00015.html + + o Nagle's Algorithm and Flushing of Output Buffers. + + The kernel performs Nagle's Algorithm (see RFC 896 and search for "nagle + algorithm" on www.whatis.com [currently + http://searchnetworking.techtarget.com/sDefinition/0,,sid7_gci754347,00.html] + on his internal output buffers. Although we flush our user-space output + buffers only if we really perform a read(2) (and not if the read is going to + be served entirely from the local buffer) this does not mean that really + every character the remote has already sent is also already read by us. + Because the kernel also has a read buffer. Optimal behaviour would be that + we flush out output buffer only if the read(2) would block. OTOH flushing + out buffers means performing a write(2) and this again is buffered in the + kernel, too. So performing an optimal read->write->read->write->... sequence + is very complex and non-trivial to implement. Especially because even using + Nagle's Algorithm always is not the right choice (see + http://www.w3.org/Protocols/HTTP/Performance/Nagle/ for details), especially + when it comes to pipelining protocols. + + o Support for writev(2). + + This can be done by internally switching to always use writev(2), + providing an emulation for writev(2) ala Pth and by basing the write + calls always on writev. + + o Kernel Read/Write Buffer Adjustments. + + BSD Sockets usually provide (see setsockopt(2)): + + SO_SNDBUF set buffer size for output + SO_RCVBUF set buffer size for input + SO_SNDLOWAT set minimum count for output + SO_RCVLOWAT set minimum count for input + + This would mean that we could also allow the control + of the kernel buffers via + + SA_BUFFER_KREAD + SA_BUFFER_KWRITE + + Unfortunately the whole kernel buffer issue is very complex, because + according to STEVENS there are both minimum and maximum sizes and both + borders heavily depend on the currently used protocol (TCP or UDP) and + the MTU of the underlying network, etc. This all together seems like + opening a can of worms if we provide SA_BUFFER_K{READ,WRITE}. Index: ossp-pkg/sa/VERSION RCS File: /v/ossp/cvs/ossp-pkg/sa/VERSION,v rcsdiff -q -kk '-r1.3' '-r1.4' -u '/v/ossp/cvs/ossp-pkg/sa/VERSION,v' 2>/dev/null --- VERSION 2002/03/15 10:47:36 1.3 +++ VERSION 2002/10/26 17:59:30 1.4 @@ -2,5 +2,5 @@ VERSION -- Version Information for OSSP sa (syntax: Text) [automatically generated and maintained by GNU shtool] - This is OSSP sa, Version 0.9.1 (15-Mar-2002) + This is OSSP sa, Version 0.9.3 (26-Oct-2002) Index: ossp-pkg/sa/sa.pod RCS File: /v/ossp/cvs/ossp-pkg/sa/sa.pod,v rcsdiff -q -kk '-r1.31' '-r1.32' -u '/v/ossp/cvs/ossp-pkg/sa/sa.pod,v' 2>/dev/null --- sa.pod 2002/10/26 15:45:32 1.31 +++ sa.pod 2002/10/26 17:59:30 1.32 @@ -768,11 +768,12 @@ =head1 HISTORY B was invented in August 2001 by Ralf S. Engelschall -Erse@engelschall.comE for use inside the OSSP project. Its -creation was prompted by the requirement to implement an SMTP logging -channel for B (logging library). Its initial code was derived -from a predecessor sub-library originally written for socket address -abstraction inside B. +Erse@engelschall.comE under contract with Cable & Wireless +Germany Ehttp://www.cw.com/deE for use inside the OSSP project. +Its creation was prompted by the requirement to implement an SMTP +logging channel for B (logging library). Its initial code was +derived from a predecessor sub-library originally written for socket +address abstraction inside B. =head1 AUTHORS