aboutsummaryrefslogtreecommitdiff
path: root/core/net
Commit message (Collapse)AuthorAgeFilesLines
* Require `@(init)` and `@(fini)` to be `proc "contextless" ()`gingerBill2025-08-081-1/+1
|
* Replace system:System.framework imports with system:SystemHarold Brenes2025-07-131-1/+1
| | | | This makes the linker work for both macOS and iOS targets
* Allow `core:net` to be imported with `-default-to-panic-allocator`.Jeroen van Rijn2025-06-173-27/+34
|
* Appease -vet for haikuJeroen van Rijn2025-06-161-0/+7
|
* Merge pull request #5315 from peperronii/masterJeroen van Rijn2025-06-1611-9/+150
|\ | | | | Expose getpeername() in core:net package as "peer_endpoint"
| * Added Socket_Info_Error to Network_Error unionPePerRoNii2025-06-161-0/+1
| |
| * Changed TCP_Recv_Err to Socket_Info_Err and tested on darwin_arm64PePerRoNii2025-06-151-1/+1
| |
| * Implemented _socket_info_error on peer_endpoint and bound_endpointPePerRoNii2025-06-159-17/+79
| |
| * added Socket_Info_Errors EnumPePerRoNii2025-06-151-0/+17
| |
| * added linux implementation NOTE: tcp_recv_error doesn't cover all casesPePerRoNii2025-06-111-0/+13
| |
| * added freebsd implementation NOTE: bsd's tcp_recv_error does not cover all casesPePerRoNii2025-06-111-0/+14
| |
| * added windows implementationPePerRoNii2025-06-111-0/+14
| |
| * added darwin implementationPePerRoNii2025-06-111-0/+13
| |
| * Add entry point in core:net as peer_endpointPePerRoNii2025-06-111-0/+7
| |
* | Replace core:posix usage in core:os/os2Jeroen van Rijn2025-06-131-24/+2
|/
* Clarify `strconv.append_*` to `strconv.write_*`Feoramund2025-06-051-1/+1
|
* Replace default_tcp_options with constant (#5056)Jeroen van Rijn2025-04-196-16/+16
| | | Replace `default_tcp_options` with constant
* net: add ECONNRESET to the error handling of recvLaytan2025-04-141-2/+2
|
* net: rework errors to be cross-platformLaytan Laats2025-04-0517-910/+1446
|
* net: drop core:os dependency for DarwinLaytan Laats2025-03-293-249/+291
|
* Fix multiple vulnerabilities in the resolverChristiano Haesbaert2025-02-231-9/+21
| | | | | | | | | | | | | | | | | | | | | | | | This fixes some vulnerabilities in the resolver that make spoofing DNS queries somewhat trivial due to the code failing to randomize xid, as well as match the reply xid with the query, and the origin of the packet: - xid of the query was fixed at zero - xid from the reply was never checked - source address of the reply was never checked This means anyone can flood the host with a fake reply with xid 0, guessing the source port is trivial as it's less than 16bits (2^16 - 1024), which would cause odin to resolve a hostname to whatever an attacker wanted. While here also plug in two memory leaks. Since this is CVE material, I've contacted @kelimion before hand which instructed to put it in a PR. There are also more bugs as the code conflates answer section, authority section and aditional section into one, while in reality only the anwer section should be taken into consideration.
* Fix missing error when TCP connection refused.Jeroen van Rijn2025-02-231-1/+2
| | | | Fixes #4867
* Merge pull request #4814 from haesbaert/dns-cleanupJeroen van Rijn2025-02-091-0/+3
|\ | | | | Cleanup allocated dns runtime data
| * Cleanup allocated dns runtime dataChristiano Haesbaert2025-02-091-0/+3
| | | | | | | | | | | | | | | | | | | | | | While harmless, the runtime should clean up non-user allocated data. On the same veign of: https://github.com/odin-lang/Odin/pull/4680 I'm kinda new to Odin and wrote netcat, in order to get a clean valgrind run, one has to manually destroy dns_configuration: https://github.com/haesbaert/learn-odin/blob/main/netcat/netcat.odin#L168-L169 While here unexport the destroy procedure and make destruction idempotent.
* | Fix some compression bugs in dns.Christiano Haesbaert2025-02-091-8/+15
|/ | | | | | | | | | | | - A compression pointer is when the two higher bits are set, the code was considering only 0xC0 as a pointer, where in reality anything from 0xC0-0xFF is a pointer, probably went unnoticed since you need big packets to have long pointers. - Make sure we can access the lower byte of the pointer by checking len, the code was careful to not access past the first byte, but ignored the second. - As per RFC9267 make sure a pointer only points backwards, this one is not so bad, as the code had a iteration_max that ended up guarding against infinite jumps. Lightly tested, some eyes are welcome, but these are remote DOSable.
* Merge pull request #4681 from haesbaert/sockaddrJeroen van Rijn2025-02-081-22/+35
|\ | | | | Add net.dial_tcp_from_host{_or_endpoint} and unify them
| * Add net.dial_tcp_from_host{_or_endpoint} and unify themChristiano Haesbaert2025-01-121-22/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The main motivation for this is to have sinergy with flags parsing, currently flags for a sockaddr returns a net.Host_Or_Endpoint, but we can't just dial from it since there isn't a variant. Consider the following: ``` Options :: struct { target: net.Host_Or_Endpoint `args:"pos=0,required" usage:"host:port"`, } before :: proc() -> (sock: net.TCP_Socket, err: net.Network_Error) { opt: Options flags.parse_or_exit(&opt, os.args) switch t in opt.target { case net.Host: sock, err = net.dial_tcp(t.hostname, t.port) case net.Endpoint: sock, err = net.dial_tcp(t) } return } after :: proc() -> (sock: net.TCP_Socket, err: net.Network_Error) { opt: Options flags.parse_or_exit(&opt, os.args) sock, err = net.dial_tcp(opt.target) return } ``` For completion, add dial_tcp_from_host() and define the upper functions in terms of the newly added ones, cuts one repeated block, now: from_hostname_and_port_string is parse + from_host_or_endpoint from_hostname_with_port_override is parse + override + from_host_or_endpoint from_host is to_endpoint + from_endpoint from_host_or_endpoint is from_endpoint or from_host
* | Simplify *nix mDNSJeroen van Rijn2025-01-271-79/+2
| |
* | Add mDNS for *nix.Jeroen van Rijn2025-01-272-2/+88
| |
* | Add mDNS/Bonjour/Avahi (.local) support for WindowsJeroen van Rijn2025-01-273-2/+12
|/
* net: fix leaking sockets in listen_tcp if an error occursLaytan Laats2024-10-084-13/+24
|
* net: fix leaking sockets in dial_tcp if connect errorsLaytan Laats2024-10-084-7/+8
|
* Merge pull request #4261 from laytan/net-bound-endpointgingerBill2024-09-195-1/+62
|\ | | | | net: add `bound_endpoint` procedure
| * net: add `bound_endpoint` procedureLaytan Laats2024-09-175-1/+62
| |
* | Fix a few incorrectly placed build tags.Karl Zylinski2024-09-149-9/+9
| |
* | Moved all packages in core, base, vendor, tests and examples to use new #+ ↵Karl Zylinski2024-09-1419-19/+19
|/ | | | file tag syntax.
* core: improve package doc comments for the documentation generatorLaytan Laats2024-09-031-32/+30
|
* Improve SRV handling in dns_windows.odinJeroen van Rijn2024-08-241-14/+18
|
* Merge pull request #4089 from laytan/riscv64gingerBill2024-08-221-2/+2
|\ | | | | add support for linux_riscv64 and freestanding_riscv64
| * add support for linux_riscv64 and freestanding_riscv64Laytan2024-08-201-2/+2
| |
* | make sure net.Network_Error is of size 8Laytan2024-08-201-1/+3
|/
* Merge pull request #3810 from Feoramund/freebsd-core-netJeroen van Rijn2024-08-0921-10/+843
|\ | | | | Port `core:net` to FreeBSD
| * Add FreeBSD `Accept_Error.Would_Block` aliasFeoramund2024-08-051-0/+2
| |
| * Add new contribution notes to `core:net`Feoramund2024-08-0521-1/+93
| |
| * Clean up some FreeBSD `core:net` codeFeoramund2024-08-052-28/+31
| |
| * Fix integer socket option values for FreeBSDFeoramund2024-08-051-0/+2
| |
| * Make `EINVAL` generic in FreeBSD `Socket_Option_Error`Feoramund2024-08-051-1/+2
| | | | | | | | | | | | | | | | The documentation for `setsockopt(2)` mentioned accept filters for `EINVAL`, but I've found that it can arise for any manner of invalid values for setting socket options. We'll just have to leave this as a generic error.
| * Use common name for `ENOBUFS`Feoramund2024-08-051-1/+1
| |
| * Add missing `ECONNRESET` `TCP_Send_Error`Feoramund2024-08-051-0/+1
| | | | | | | | This was not specifically documented in `send(2)`.
| * Set `NOSIGPIPE` on all `core:net` FreeBSD socketsFeoramund2024-08-051-0/+17
| |