Finish up 1.1.4
This commit is contained in:
parent
12b859eaf3
commit
2ba9fd6c82
24
API.md
24
API.md
|
@ -337,30 +337,6 @@ out. There's no way to set this timeout, or cancel or override it via AMOS.
|
||||||
|
|
||||||
String with IP address, or blank string on error.
|
String with IP address, or blank string on error.
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
#### RESULT=Socket Status(Socket)
|
|
||||||
|
|
||||||
Returns basic connection information about a socket.
|
|
||||||
|
|
||||||
##### Warning
|
|
||||||
|
|
||||||
Since none of the socket processing of this extension happens in the
|
|
||||||
background, you're likely better off using other means to detect
|
|
||||||
socket status.
|
|
||||||
|
|
||||||
* Disconnected: Try a recv and get zero bytes back. Check Socket Errno.
|
|
||||||
* Broken: Try a send. If it fails, check Socket Errno.
|
|
||||||
* Ready: Use the Async Wait functions.
|
|
||||||
|
|
||||||
##### Returns
|
|
||||||
|
|
||||||
Status of socket:
|
|
||||||
|
|
||||||
* 0 = Closed
|
|
||||||
* 2 = Listening
|
|
||||||
* 6 = Connecting
|
|
||||||
* 7 = Connected
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
74
README.md
74
README.md
|
@ -127,6 +127,9 @@ Socket Library Close
|
||||||
* [AQUABYSS](https://agedcode.com/agedcode/en/games/aquabyss)
|
* [AQUABYSS](https://agedcode.com/agedcode/en/games/aquabyss)
|
||||||
* As of April 2023, the extension's been in heavy use for over a month
|
* As of April 2023, the extension's been in heavy use for over a month
|
||||||
on the client side of the game.
|
on the client side of the game.
|
||||||
|
* [Hop to the Top: Bunny's Revenge](https://rabbit.robsmithdev.co.uk/)
|
||||||
|
* The game uses this extension to send and receive high score information.
|
||||||
|
I also did some of the art for the game!
|
||||||
|
|
||||||
Doing something cool with the extension?
|
Doing something cool with the extension?
|
||||||
[Contact me](https://theindustriousrabbit.com/about) and I'll add it to the list!
|
[Contact me](https://theindustriousrabbit.com/about) and I'll add it to the list!
|
||||||
|
@ -158,7 +161,7 @@ This project uses semantic versioning.
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
Copyright 2023 John Bintz. Licensed under the MIT License.
|
Copyright 2023-2024 John Bintz. Licensed under the MIT License.
|
||||||
|
|
||||||
If you use this in your project, and you really want to,
|
If you use this in your project, and you really want to,
|
||||||
throw a link to theindustriousrabbit.com somewhere! You can
|
throw a link to theindustriousrabbit.com somewhere! You can
|
||||||
|
@ -181,14 +184,75 @@ to contact me.
|
||||||
* Fix bug in Socket Wait Async Writing where result of getsockopt was
|
* Fix bug in Socket Wait Async Writing where result of getsockopt was
|
||||||
incorrectly used.
|
incorrectly used.
|
||||||
|
|
||||||
## Development
|
### 1.1.0 (2024-02-23)
|
||||||
|
|
||||||
|
* Fix bug in `Dns Get Host Address By Name$` where it assumed AMOS strings are
|
||||||
|
null-terminated. They are not.
|
||||||
|
* Add `Socket Herrno` to aid in debugging resolver errors.
|
||||||
|
|
||||||
|
### 1.1.1 (2024-03-17)
|
||||||
|
|
||||||
|
* Fix bug in `Socket Inet Ntoa$` where the null terminator on the result of
|
||||||
|
calling `Inet_NtoA` was being included in the AMOS string.
|
||||||
|
* Fix crash bug in `Socket Inet Ntoa$` if called with the BSD Socket library
|
||||||
|
was not open.
|
||||||
|
|
||||||
|
### 1.1.2 (2024-03-18)
|
||||||
|
|
||||||
|
* Fix all functions that return strings so that strings work properly
|
||||||
|
in AMOS. While you could kind of use the immediate return value of the
|
||||||
|
string, any future manipulation of that string would fail. This fixes
|
||||||
|
the following functions:
|
||||||
|
* `Socket Inet Ntoa$`
|
||||||
|
* `Dns Get Address By Name$`
|
||||||
|
* `Socket Recv$`
|
||||||
|
|
||||||
|
### 1.1.3
|
||||||
|
|
||||||
|
Internal release.
|
||||||
|
|
||||||
|
### 1.1.4 (2024-04-26)
|
||||||
|
|
||||||
|
* Fix bug in fdset macro where using D3 for a parameter could cause corruption
|
||||||
|
* Copy a null-terminated copy of IP address for `SocketIPAddressPortToSockaddr`
|
||||||
|
* Add test suite to exercise extension functionality
|
||||||
|
* Fix several crash bugs found due to the test suite
|
||||||
|
* Retructure API docs for easier reading
|
||||||
|
|
||||||
|
# Development
|
||||||
|
|
||||||
### Environment
|
### Environment
|
||||||
|
|
||||||
|
#### Native Amiga
|
||||||
|
|
||||||
* Clone the [AMOS Professional source code](https://github.com/AOZ-Studio/AMOS-Professional-Official)
|
* Clone the [AMOS Professional source code](https://github.com/AOZ-Studio/AMOS-Professional-Official)
|
||||||
* Run `execute absdsocket`
|
* Copy `AMOSPro Sources/+lequ.s` to `+LEqu.s`
|
||||||
* Note that you'll have to fix up some assigns and files in the AMOS Professional
|
* Generate the socket LVO file in the `src` directory
|
||||||
source directory. I'll update this README with those changes once I track them down...
|
* Install [`fd2pragma`](https://aminet.net/package/dev/misc/fd2pragma) in your path
|
||||||
|
* Download `https://raw.githubusercontent.com/cnvogelg/amitools/master/amitools/data/fd/bsdsocket_lib.fd` to `src`
|
||||||
|
* In a Shell:
|
||||||
|
|
||||||
|
```
|
||||||
|
cd src
|
||||||
|
fd2pragma bsdsocket_lib.fd to "" special 20
|
||||||
|
```
|
||||||
|
|
||||||
|
* Fix up `src/absdsocket` to match your system's setup
|
||||||
|
* In a Shell:
|
||||||
|
|
||||||
|
```
|
||||||
|
cd src
|
||||||
|
execute absdsocket
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Emulated setup (WinUAE, FS-UAE, Amiberry)
|
||||||
|
|
||||||
|
Run `bin/setup` to do most of the setups above.
|
||||||
|
|
||||||
|
### Debugging
|
||||||
|
|
||||||
|
Modify data in the `DebugArea` and read it by `Peek`/`Deek`/`Leek`ing from
|
||||||
|
the base address provided by `Socket Get Debug Area`.
|
||||||
|
|
||||||
### Releasing
|
### Releasing
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -7,7 +7,7 @@
|
||||||
; extension number 18
|
; extension number 18
|
||||||
ExtNb equ 18-1
|
ExtNb equ 18-1
|
||||||
Version MACRO
|
Version MACRO
|
||||||
dc.b "1.1.3-20240417"
|
dc.b "1.1.4-20240426"
|
||||||
ENDM
|
ENDM
|
||||||
VerNumber equ $1
|
VerNumber equ $1
|
||||||
|
|
||||||
|
@ -345,7 +345,7 @@ C_Tk dc.w 1,0
|
||||||
dc.b "socket close socke","t"+$80,"00",-1
|
dc.b "socket close socke","t"+$80,"00",-1
|
||||||
|
|
||||||
AddTokenFunction SocketHerrno
|
AddTokenFunction SocketHerrno
|
||||||
dc.b "socket herrn","0"+$80,"0",-1
|
dc.b "socket herrn","o"+$80,"0",-1
|
||||||
|
|
||||||
; TOKEN_END
|
; TOKEN_END
|
||||||
dc.w 0
|
dc.w 0
|
||||||
|
@ -1372,8 +1372,10 @@ _SocketSelect_PerformSelect
|
||||||
PreserveStackFunction
|
PreserveStackFunction
|
||||||
EnsureBSDSocketLibrary _SocketInetNtoa_LibraryOpen
|
EnsureBSDSocketLibrary _SocketInetNtoa_LibraryOpen
|
||||||
|
|
||||||
|
MOVE.L ChVide(A5),D3
|
||||||
|
|
||||||
RestoreStackFunction
|
RestoreStackFunction
|
||||||
Ret_Int
|
Ret_String
|
||||||
|
|
||||||
_SocketInetNtoa_LibraryOpen:
|
_SocketInetNtoa_LibraryOpen:
|
||||||
MOVE.L D3,D0
|
MOVE.L D3,D0
|
||||||
|
@ -1390,9 +1392,6 @@ _SocketInetNtoA_StringSizeLoop:
|
||||||
TST.B (A0)+
|
TST.B (A0)+
|
||||||
BNE _SocketInetNtoA_StringSizeLoop
|
BNE _SocketInetNtoA_StringSizeLoop
|
||||||
|
|
||||||
MOVE.L A0,D3
|
|
||||||
SUB.L A2,D3 ; D3 = length
|
|
||||||
SUBQ #1,D3 ; get rid of the null terminator
|
|
||||||
MOVE.L A0,D4
|
MOVE.L A0,D4
|
||||||
SUB.L A2,D4 ; D4 = length
|
SUB.L A2,D4 ; D4 = length
|
||||||
SUBQ #1,D4 ; get rid of the null terminator
|
SUBQ #1,D4 ; get rid of the null terminator
|
||||||
|
@ -1413,13 +1412,8 @@ _SocketInetNtoA_StringSizeLoop:
|
||||||
SUBQ #1,D4
|
SUBQ #1,D4
|
||||||
|
|
||||||
_SocketInetNtoA_StringCopyLoop:
|
_SocketInetNtoA_StringCopyLoop:
|
||||||
MOVE.B (A2,D3),(A0,D3)
|
MOVE.B (A2,D4),(A0,D4)
|
||||||
DBRA D3,_SocketInetNtoA_StringCopyLoop
|
DBRA D4,_SocketInetNtoA_StringCopyLoop
|
||||||
|
|
||||||
; make the address even
|
|
||||||
EvenOutStringAddress A0,D3
|
|
||||||
|
|
||||||
MOVE.L A0,HiChaine(A5) ; Does L_Demande nuke A5 too?
|
|
||||||
|
|
||||||
MOVE.L A1,D3 ; string return
|
MOVE.L A1,D3 ; string return
|
||||||
|
|
||||||
|
@ -2146,7 +2140,12 @@ _SocketCloseSocket_LibraryOpen:
|
||||||
Lib_Par SocketHerrno
|
Lib_Par SocketHerrno
|
||||||
; - - - - - - - - - - - - -
|
; - - - - - - - - - - - - -
|
||||||
PreserveStackFunction
|
PreserveStackFunction
|
||||||
|
EnsureBSDSocketLibrary _SocketHerrno_LibraryOpen
|
||||||
|
|
||||||
|
RestoreStackFunction
|
||||||
|
Ret_Int
|
||||||
|
|
||||||
|
_SocketHerrno_LibraryOpen:
|
||||||
; set up tag list memory and place for herrno to go
|
; set up tag list memory and place for herrno to go
|
||||||
Dlea AcceptScratchArea,A0
|
Dlea AcceptScratchArea,A0
|
||||||
MOVE.L A0,A2
|
MOVE.L A0,A2
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
; BSDSocket.s, list of the library functions on the 26-04-2024 14:45:36
|
; BSDSocket.s, list of the library functions on the 26-04-2024 20:54:05
|
||||||
;
|
;
|
||||||
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
L_Cold: set 0
|
L_Cold: set 0
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
; BSDSocket.s, library size on the 26-04-2024 14:45:36
|
; BSDSocket.s, library size on the 26-04-2024 20:54:05
|
||||||
;
|
;
|
||||||
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
Lib_Size equ 39
|
Lib_Size equ 39
|
||||||
|
|
|
@ -9,5 +9,4 @@ FAILAT 21
|
||||||
copy AMOSPro_System:APSystem/AMOSPro_BSDSocket.lib AMOSPro_System:APSystem/AMOSPro_BSDSocket.lib.bak
|
copy AMOSPro_System:APSystem/AMOSPro_BSDSocket.lib AMOSPro_System:APSystem/AMOSPro_BSDSocket.lib.bak
|
||||||
FAILAT 10
|
FAILAT 10
|
||||||
copy AMOSPro_BSDSocket.Lib AMOSPro_System:APSystem/
|
copy AMOSPro_BSDSocket.Lib AMOSPro_System:APSystem/
|
||||||
;use an amos file here that includes the plugin to quickly build a test program
|
apcmp "/test/TestSuite.amos" inclib
|
||||||
;apcmp "aqua_test_plugin.amos" inclib
|
|
||||||
|
|
|
@ -1,34 +0,0 @@
|
||||||
[Socket Library Open/Open Library] 1075577444
|
|
||||||
[Socket Library Open/Double open] 1075577444
|
|
||||||
[Socket Create Inet Socket] 0
|
|
||||||
[Socket Set Nonblocking/False] 0
|
|
||||||
[Socket Set Nonblocking/True] 0
|
|
||||||
[Socket Set Nonblocking/True] Preserving this state for rest of tests
|
|
||||||
[Dns Get Address By Name$/Bad domain name]
|
|
||||||
[Dns Get Address By Name$/localhost] 127.0.0.1
|
|
||||||
[Dns Get Address By Name$/aminet.net] 35.223.124.178
|
|
||||||
[Dns Get Address By Name$/aminet.net] Using this IP address for connection tests
|
|
||||||
[Dns Get Address By Name$/Returned string can be manipulated] Cat35.223.124.178Dog
|
|
||||||
[Socket Connect/port too high] -11
|
|
||||||
[Socket Connect/blank ip] -14
|
|
||||||
[Socket Connect/invalid ip] -1
|
|
||||||
[Socket Connect/aminet IP (35.223.124.178) from above] -1 (ok to be -1, will Wait Async Writing next)
|
|
||||||
[Socket Wait Async Writing/With unconnected socket/2 second timeout] 1
|
|
||||||
[Socket Wait Async Writing/With unconnected socket/Zero timeout] 1
|
|
||||||
[Socket Wait Async Writing/Connected socket/Two second timeout] 1
|
|
||||||
[Socket Wait Async Writing/Connected socket/Zero timeout] 1
|
|
||||||
[Socket Wait Async Writing/Connected socket/Attempt to get actual connection] 1
|
|
||||||
[Socket Wait Async Writing/Socket Send and Socket Send$/Socket send$ first half] 10
|
|
||||||
[Socket Wait Async Writing/Socket Send and Socket Send$/Socket send second half] 18
|
|
||||||
[Socket Wait Async Writing/Socket wait Async Reading/With unconnected socket/2 second timeout] 1
|
|
||||||
[Socket Wait Async Writing/Socket wait Async Reading/With unconnected socket/Zero timeout] 1
|
|
||||||
[Socket Wait Async Writing/Socket wait Async Reading/With aminet socket/2 second timeout] 1
|
|
||||||
[Socket Wait Async Writing/Socket wait Async Reading/With aminet socket/Zero timeout] 1
|
|
||||||
[Socket Wait Async Writing/Socket Recv$ and Socket Recv/Socket Recv$/Read 20 characters] HTTP/1.1 302 Found
|
|
||||||
|
|
||||||
[Socket Wait Async Writing/Socket Recv$ and Socket Recv/Socket Recv$/String can be manipulated] CatHTTP/1.1 302 Found
|
|
||||||
Dog
|
|
||||||
[Socket Wait Async Writing/Socket Recv$ and Socket Recv/Socket Read/Read 20 bytes] 20
|
|
||||||
[Socket Wait Async Writing/Socket Recv$ and Socket Recv/Socket Read/Data was read] Date: Fri, 26 Apr 20
|
|
||||||
[Socket Wait Async Writing/Socket Library Close/Close] Success
|
|
||||||
[Socket Wait Async Writing/Socket Library Close/Double close] Success
|
|
BIN
test/TestSuite
BIN
test/TestSuite
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue