Roadshow cleanups, Wait Writing return code fixes

This commit is contained in:
John Bintz 2023-04-03 17:24:22 -04:00
parent a1f57da200
commit 338ed94a77
4 changed files with 35 additions and 10 deletions

Binary file not shown.

16
API.md
View File

@ -123,9 +123,11 @@ a remote socket to send you data.
##### Returns ##### Returns
* 0 on timeout * 0 on timeout.
* -1,-2 on error * -1 on error. Use `Socket Errno` for more detail.
* 1 on success * -3 on the socket being sorta-ready. This isn't a connection timeout,
so check again.
* 1 on success.
#### RESULT=Socket Async Wait Writing(Socket, Wait_ms) #### RESULT=Socket Async Wait Writing(Socket, Wait_ms)
@ -135,9 +137,11 @@ has been completed.
##### Returns ##### Returns
* 0 on timeout * 0 on timeout.
* -1,-2 on error * -1 on error. Use `Socket Errno` for more detail.
* 1 on success * -3 on the socket being sorta-ready. This isn't a connection timeout,
so check again.
* 1 on success.
#### RESULT=Socket Set Timeout(Socket, Wait_ms) #### RESULT=Socket Set Timeout(Socket, Wait_ms)

View File

@ -139,6 +139,11 @@ Doing something cool with the extension?
most system-friendly way of doing this. most system-friendly way of doing this.
* MiamiDX can be fiddly, at least it is on my MiSTer set up. * MiamiDX can be fiddly, at least it is on my MiSTer set up.
If Internet connectivity is not working, try re-connecting to the network. If Internet connectivity is not working, try re-connecting to the network.
* If using Roadshow, `bsdsocket.library` will always be available, so
you can't use its presence or lack thereof to test if Internet is available.
You'll have to use a combination of DNS lookups and/or connection
timeouts using `Socket Async Wait Writing` to determine if the Internet
is available.
## Versioning ## Versioning

View File

@ -1576,6 +1576,7 @@ _DoSocketLibraryClose_Skip:
; ;
; @return ; @return
; 1 on success ; 1 on success
; -1 on error, check Socket Errno
; -2 on library not open ; -2 on library not open
; -3 on not interesting yet ; -3 on not interesting yet
; 0 on timeout ; 0 on timeout
@ -1627,8 +1628,13 @@ _SocketWaitAsyncWriting_LibraryOpen:
MOVE.L BSDSocketBase-MB(A4),A6 MOVE.L BSDSocketBase-MB(A4),A6
CALLLIB WaitSelect CALLLIB WaitSelect
TST.L D0 ; timeout, pass through ; returns:
BPL _SocketWaitAsyncWriting_Done ; * 0 on timeout
; * >0 on socket was seen
; * -1 on error
TST.L D0
BEQ _SocketWaitAsyncWriting_Timeout
BMI _SocketWaitAsyncWriting_Error
MOVE.L (SP)+,D0 ; D0 contains socket again MOVE.L (SP)+,D0 ; D0 contains socket again
Dload A4 Dload A4
@ -1669,6 +1675,7 @@ _SocketWaitAsyncWriting_CheckSockopt:
TST.L D0 TST.L D0
BEQ _SocketWaitAsyncWriting_Ready BEQ _SocketWaitAsyncWriting_Ready
; still not ready
MOVEM.L (SP)+,A3-A4 MOVEM.L (SP)+,A3-A4
MOVE.L #-3,D3 MOVE.L #-3,D3
@ -1682,11 +1689,20 @@ _SocketWaitAsyncWriting_Ready:
RestoreStackFunction RestoreStackFunction
Ret_Int Ret_Int
_SocketWaitAsyncWriting_Done: _SocketWaitAsyncWriting_Error:
MOVE.L (SP)+,D1 MOVE.L (SP)+,D1
MOVEM.L (SP)+,A3-A4 MOVEM.L (SP)+,A3-A4
MOVE.L D0,D3 MOVE.L #-1,D3
RestoreStackFunction
Ret_Int
_SocketWaitAsyncWriting_Timeout:
MOVE.L (SP)+,D1
MOVEM.L (SP)+,A3-A4
MOVEQ #0,D3
RestoreStackFunction RestoreStackFunction
Ret_Int Ret_Int