aboutsummaryrefslogtreecommitdiff
path: root/core/net
Commit message (Collapse)AuthorAgeFilesLines
* Fix #6251Jeroen van Rijn3 days1-46/+76
| | | | | Introduces `strings.Builder` versions of the various `to_string` procedures. These are used using a stack buffer for `address_to_string` as called by `endpoint_to_string`, requiring no temp allocation for the address that's then written into the endpoint's builder.
* Revert "fix wrong allocator in `endpoint_to_string`"Laytan Laats4 days1-2/+2
| | | | This reverts commit f755839877b2c565f8087d22c13e475b145829c3.
* fix wrong allocator in `endpoint_to_string`Laytan Laats4 days1-2/+2
| | | | Fixes #6251
* core:os -> core:os/old && core:os/os2 -> core:osJeroen van Rijn6 days1-1/+1
|
* Remove unused importJeroen van Rijn7 days1-1/+0
|
* Fix more merge conflicts.Jeroen van Rijn7 days1-7/+7
|
* More conflicts during rebaseJeroen van Rijn7 days1-1/+1
|
* Fix `endpoint_to_string` missing colonkonodin2026-01-181-0/+1
|
* net: implement OpenBSD and NetBSD support & add stubs for other targets & ↵Laytan Laats2026-01-1119-277/+502
| | | | cleanup
* Fix `EINVAL` binding to IPv6 on FreeBSDkonodin2026-01-081-1/+1
|
* fix map_to_ip6 offsetNeirokan2026-01-011-2/+2
|
* net(docs): recv of 0 bytes with no error is a graceful closeLaytan Laats2025-12-212-5/+22
|
* Change Odin's LICENSE to zlib from BSD 3-clausegingerBill2025-10-2821-21/+21
| | | | This change was made in order to allow things produced with Odin and using Odin's core library, to not require the LICENSE to also be distributed alongside the binary form.
* Further overhaul of package line comments.Jeroen van Rijn2025-10-091-1/+1
|
* More package lines.Jeroen van Rijn2025-10-091-16/+15
|
* 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
| |