TUPLE: server-port < port addr encoding ;
-: check-server-port ( port -- port )
- dup check-disposed
- dup server-port? [ "Not a server port" throw ] unless ; inline
-
GENERIC: (server) ( addrspec -- handle )
GENERIC: (accept) ( server addrspec -- handle sockaddr )
: check-connectionless-port ( port -- port )
dup { [ datagram-port? ] [ raw-port? ] } 1|| [ invalid-port ] unless ;
-
+
: check-send ( packet addrspec port -- packet addrspec port )
check-connectionless-port dup check-disposed check-port ;
-
+
: check-receive ( port -- port )
check-connectionless-port dup check-disposed ;
-
+
HOOK: (send) io-backend ( packet addrspec datagram -- )
: addrinfo>addrspec ( addrinfo -- addrspec )
: data ( -- )
"DATA" command ;
-ERROR: message-contains-dot message ;
-
-M: message-contains-dot summary ( obj -- string )
- drop "Message cannot contain . on a line by itself" ;
-
-: validate-message ( msg -- msg' )
- "." over member?
- [ message-contains-dot ] when ;
-
: send-body ( email -- )
binary encode-output
[ body>> ] [ encoding>> ] bi encode >base64-lines write