io.ports: More correct memory handling. There are still leaks in the tests...
parent
3143222223
commit
30673f65cf
|
@ -202,7 +202,10 @@ M: output-port dispose*
|
|||
] with-destructors ;
|
||||
|
||||
M: buffered-port dispose*
|
||||
[ call-next-method ] [ buffer>> dispose ] bi ;
|
||||
[
|
||||
[ buffer>> &dispose drop ]
|
||||
[ call-next-method ] bi
|
||||
] with-destructors ;
|
||||
|
||||
M: port cancel-operation handle>> cancel-operation ;
|
||||
|
||||
|
|
|
@ -133,10 +133,12 @@ M: openssl <secure-context> ( config -- context )
|
|||
] with-destructors ;
|
||||
|
||||
M: openssl-context dispose*
|
||||
[ aliens>> [ free ] each ]
|
||||
[ sessions>> values [ SSL_SESSION_free ] each ]
|
||||
[ handle>> SSL_CTX_free ]
|
||||
tri ;
|
||||
[
|
||||
[ aliens>> [ &free drop ] each ]
|
||||
[ sessions>> values [ SSL_SESSION_free ] each ]
|
||||
[ handle>> SSL_CTX_free ]
|
||||
tri
|
||||
] with-destructors ;
|
||||
|
||||
TUPLE: ssl-handle < disposable file handle connected ;
|
||||
|
||||
|
@ -150,13 +152,19 @@ SYMBOL: default-secure-context
|
|||
] unless* ;
|
||||
|
||||
: <ssl-handle> ( fd -- ssl )
|
||||
ssl-handle new-disposable
|
||||
current-secure-context handle>> SSL_new
|
||||
dup ssl-error >>handle
|
||||
swap >>file ;
|
||||
[
|
||||
ssl-handle new-disposable |dispose
|
||||
current-secure-context handle>> SSL_new
|
||||
dup ssl-error >>handle
|
||||
swap >>file
|
||||
] with-destructors ;
|
||||
|
||||
M: ssl-handle dispose*
|
||||
[ handle>> SSL_free ] [ file>> dispose ] bi ;
|
||||
[
|
||||
! Free file>> after SSL_free
|
||||
[ file>> &dispose drop ]
|
||||
[ handle>> SSL_free ] bi
|
||||
] with-destructors ;
|
||||
|
||||
: check-verify-result ( ssl-handle -- )
|
||||
SSL_get_verify_result dup X509_V_OK =
|
||||
|
|
|
@ -65,10 +65,11 @@ io.sockets.secure.debug ;
|
|||
|
||||
[ ] [
|
||||
[
|
||||
"127.0.0.1" 0 <inet4> ascii <server> [
|
||||
dup addr>> port>> "port" get fulfill
|
||||
accept drop 1 minutes sleep dispose
|
||||
] with-disposal
|
||||
[
|
||||
"127.0.0.1" 0 <inet4> ascii <server> &dispose
|
||||
dup addr>> port>> "port" get fulfill
|
||||
accept drop &dispose 1 minutes sleep
|
||||
] with-destructors
|
||||
] "Silly server" spawn drop
|
||||
] unit-test
|
||||
|
||||
|
@ -83,18 +84,22 @@ io.sockets.secure.debug ;
|
|||
|
||||
[ ] [
|
||||
[
|
||||
"127.0.0.1" "port" get ?promise
|
||||
<inet4> ascii <client> drop 1 minutes sleep dispose
|
||||
[
|
||||
"127.0.0.1" "port" get ?promise
|
||||
<inet4> ascii <client> drop &dispose 1 minutes sleep
|
||||
] with-destructors
|
||||
] "Silly client" spawn drop
|
||||
] unit-test
|
||||
|
||||
[
|
||||
1 seconds secure-socket-timeout [
|
||||
[
|
||||
"127.0.0.1" 0 <inet4> <secure> ascii <server> [
|
||||
dup addr>> addrspec>> port>> "port" get fulfill
|
||||
accept drop dup stream-read1 drop dispose
|
||||
] with-disposal
|
||||
[
|
||||
"127.0.0.1" 0 <inet4> <secure> ascii <server> [
|
||||
dup addr>> addrspec>> port>> "port" get fulfill
|
||||
accept drop &dispose dup stream-read1 drop
|
||||
] with-disposal
|
||||
] with-destructors
|
||||
] with-test-context
|
||||
] with-variable
|
||||
] [ io-timeout? ] must-fail-with
|
||||
|
@ -108,11 +113,13 @@ io.sockets.secure.debug ;
|
|||
[ ] [
|
||||
[
|
||||
[
|
||||
"127.0.0.1" 0 <inet4> <secure> ascii <server> [
|
||||
dup addr>> addrspec>> port>> "port" get fulfill
|
||||
accept drop 1 minutes sleep dispose
|
||||
] with-disposal
|
||||
] with-test-context
|
||||
[
|
||||
"127.0.0.1" 0 <inet4> <secure> ascii <server> [
|
||||
dup addr>> addrspec>> port>> "port" get fulfill
|
||||
accept drop &dispose 1 minutes sleep
|
||||
] with-disposal
|
||||
] with-test-context
|
||||
] with-destructors
|
||||
] "Silly server" spawn drop
|
||||
] unit-test
|
||||
|
||||
|
@ -131,20 +138,24 @@ io.sockets.secure.debug ;
|
|||
[ ] [
|
||||
[
|
||||
[
|
||||
"127.0.0.1" "port" get ?promise
|
||||
<inet4> <secure> ascii <client> drop 1 minutes sleep dispose
|
||||
] with-test-context
|
||||
[
|
||||
"127.0.0.1" "port" get ?promise
|
||||
<inet4> <secure> ascii <client> drop &dispose 1 minutes sleep
|
||||
] with-test-context
|
||||
] with-destructors
|
||||
] "Silly client" spawn drop
|
||||
] unit-test
|
||||
|
||||
[
|
||||
1 seconds secure-socket-timeout [
|
||||
[
|
||||
"127.0.0.1" 0 <inet4> <secure> ascii <server> [
|
||||
dup addr>> addrspec>> port>> "port" get fulfill
|
||||
accept drop dispose
|
||||
] with-disposal
|
||||
] with-test-context
|
||||
] with-variable
|
||||
[
|
||||
1 seconds secure-socket-timeout [
|
||||
[
|
||||
"127.0.0.1" 0 <inet4> <secure> ascii <server> [
|
||||
dup addr>> addrspec>> port>> "port" get fulfill
|
||||
accept drop &dispose
|
||||
] with-disposal
|
||||
] with-test-context
|
||||
] with-variable
|
||||
] with-destructors
|
||||
] [ io-timeout? ] must-fail-with
|
||||
] drop
|
||||
|
|
Loading…
Reference in New Issue