Hey
On 4. Feb 2022, at 17:32, Christian Kellermann ckeen@pestilenz.org wrote:
Hey Tobias!
- Tobias Pape Das.Linux@gmx.de [220204 14:46]:
The host is not a string but rather an address. Try this:
addr := NetNameResolver addressForName: '255.255.255.255' timeout: 10. s := Socket newUDP. s setOption: 'SO_BROADCAST' value: 1. [[(Delay forSeconds: numberOfSeconds) wait. s sendUDPData: shoutout toHost: addr port: (self portNumber) ] repeat] fork.
Oh, duh! Yes of course. I stopped at the <prim> call pragma, I should have gone deeper. I somehow missed the example in the code.
No worries!
Another error state for invalid parameters might have helped here in general though.
Funnily enough, the primitive does this for all sort of things: (c code generated from SLANG: https://github.com/OpenSmalltalk/opensmalltalk-vm/blob/Cog/src/plugins/Socke... ) but not the host. This might be because things changed over time, and, indeed, there used to be a variant to pass a host in a different manner.
Thanks for your patience explaining all this.
No, no worries at all. I actually debugged the VM until i reached here: https://github.com/OpenSmalltalk/opensmalltalk-vm/blob/Cog/src/plugins/Socke... and, yes, sz was not 4, and yes, primitiveFail should probably be primitiveFailFor(PrimErrBadArgument)
:D
Best regards -Tobias
Cheers,
Christian