diff --git a/CHANGES b/CHANGES index d66035c..b6a155b 100644 --- a/CHANGES +++ b/CHANGES @@ -1,5 +1,5 @@ -####################### V 2.0.0-b1: +####################### V 2.0.0-b2: new features: address chains consisting of inter and endpoint addresses, linked with @@ -27,6 +27,12 @@ new features: new form of FD address with output/input fd numbers +corrections: + help displayed some option types wrong + + under some circumstances shutdown was called multiple times for the + same fd + ####################### V 1.7.0.0: new features: diff --git a/test.sh b/test.sh index 48963ef..f1510e6 100755 --- a/test.sh +++ b/test.sh @@ -4592,7 +4592,7 @@ N=$((N+1)) NAME=PROXY2SPACES case "$TESTS" in -*%functions%*|*%$NAME%*) +*%functions%*|*%proxy%*|*%$NAME%*) TEST="$NAME: proxy connect accepts status with multiple spaces" if ! eval $NUMCOND; then :; elif ! testaddrs proxy >/dev/null; then @@ -4888,7 +4888,7 @@ N=$((N+1)) #! NAME=OUTBOUNDIN case "$TESTS" in -*%functions%*|*%$NAME%*) +*%functions%*|*%proxy%*|*%$NAME%*) TEST="$NAME: gender changer via SSL through HTTP proxy, oneshot" if ! eval $NUMCOND; then :; elif ! feat=$(testaddrs openssl proxy); then @@ -4975,7 +4975,7 @@ PORT=$((RANDOM+16184)) #! NAME=INTRANETRIPPER case "$TESTS" in -*%functions%*|*%$NAME%*) +*%functions%*|*%proxy%*|*%$NAME%*) TEST="$NAME: gender changer via SSL through HTTP proxy, daemons" if ! eval $NUMCOND; then :; elif ! feat=$(testaddrs openssl proxy); then @@ -7902,7 +7902,7 @@ NAME=IP4BROADCAST # because we receive - in addition to the regular reply - our own broadcast, # we use a token XXXX that is changed to YYYY in the regular reply packet. case "$TESTS" in -*%functions%*|*%rawip%*|*%rawip4%*|*%ip4%*|*%dgram%*|*%broadcast%*|*%root%*|*%$NAME%*) +*%functions%*|*%engine%*|*%rawip%*|*%rawip4%*|*%ip4%*|*%dgram%*|*%broadcast%*|*%root%*|*%$NAME%*) TEST="$NAME: raw IPv4 broadcast" if ! eval $NUMCOND; then :; elif ! feat=$(testaddrs ip4 rawip) || ! runsip4 >/dev/null; then diff --git a/xioengine.c b/xioengine.c index 33fcca4..60e8fc3 100644 --- a/xioengine.c +++ b/xioengine.c @@ -436,7 +436,7 @@ int _socat(xiofile_t *xfd1, xiofile_t *xfd2) { /* NOW handle EOFs */ - if (bytes1 == 0) { + if (bytes1 == 0 || XIO_RDSTREAM(sock1)->eof >= 2) { if (XIO_RDSTREAM(sock1)->ignoreeof && !XIO_RDSTREAM(sock1)->actescape && !sock1->stream.closing) { Debug1("socket 1 (fd %d) is at EOF, ignoring", @@ -459,7 +459,7 @@ int _socat(xiofile_t *xfd1, xiofile_t *xfd2) { } } - if (bytes2 == 0) { + if (bytes2 == 0 || XIO_RDSTREAM(sock2)->eof >= 2) { if (XIO_RDSTREAM(sock2)->ignoreeof && !XIO_RDSTREAM(sock2)->actescape && !sock2->stream.closing) { Debug1("socket 2 (fd %d) is at EOF, ignoring", diff --git a/xiohelp.c b/xiohelp.c index 27b29d7..4732507 100644 --- a/xiohelp.c +++ b/xiohelp.c @@ -18,19 +18,19 @@ static const char *optiontypenames[] = { "SHORT", "SIZE_T", "SOCKADDR", "UNSIGNED-INT", "UNSIGNED-LONG","UNSIGNED-SHORT","MODE_T", "GID_T", "UID_T", "INT[3]", "STRUCT-TIMEVAL", "STRUCT-TIMESPEC", + "DOUBLE", "STRING-NULL", "LONG-LONG", "OFF_T", + "OFF64_T", "INT:INT", "INT:INTP", "INT:BIN", + "INT:STRING", "INT:INT:INT", "INT:INT:BIN", "INT:INT:STRING", + "IP4NAME", + #if HAVE_STRUCT_LINGER - "STRUCT-LINGER", + "STRUCT-LINGER", #endif - "DOUBLE", "STRING-NULL", "LONG-LONG", - "OFF_T", "OFF64_T", #if HAVE_STRUCT_IP_MREQN "STRUCT-IP_MREQN", #elif HAVE_STRUCT_IP_MREQ "STRUCT-IP_MREQ", #endif - "IP4NAME", - "INT:INT", "INT:INTP", "INT:BIN", "INT:STRING", - "INT:INT:INT", "INT:INT:BIN", "INT:INT:STRING", } ;