From 7d931543f66b46ad287ca0a048445dcb511321d2 Mon Sep 17 00:00:00 2001 From: Asumu Takikawa Date: Thu, 4 Apr 2013 13:39:15 -0400 Subject: [PATCH] Make IP addresses immutable original commit: f904bd8ba5931cd3c09e2280a2bbba141e656670 --- collects/net/private/ip.rkt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/collects/net/private/ip.rkt b/collects/net/private/ip.rkt index 0ae12b2d27..78ccb7ec64 100644 --- a/collects/net/private/ip.rkt +++ b/collects/net/private/ip.rkt @@ -49,6 +49,7 @@ (struct ipv4 (bytes) #:transparent + #:guard (λ (bytes _) (bytes->immutable-bytes bytes)) #:methods gen:equal+hash [(define (equal-proc addr1 addr2 rec) (equal? (ipv4-bytes addr1) (ipv4-bytes addr1))) @@ -57,6 +58,7 @@ (struct ipv6 (bytes) #:transparent + #:guard (λ (bytes _) (bytes->immutable-bytes bytes)) #:methods gen:equal+hash [(define (equal-proc addr1 addr2 rec) (equal? (ipv6-bytes addr1) (ipv6-bytes addr1))) @@ -79,7 +81,13 @@ (check-equal? (make-ip-address "2607:f8b0:4009:800::100e") (ipv6 (bytes 38 7 248 176 64 9 8 0 0 0 0 0 0 0 16 14))) (check-equal? (make-ip-address (bytes 38 7 248 176 64 9 8 0 0 0 0 0 0 0 16 14)) - (ipv6 (bytes 38 7 248 176 64 9 8 0 0 0 0 0 0 0 16 14)))) + (ipv6 (bytes 38 7 248 176 64 9 8 0 0 0 0 0 0 0 16 14))) + + (let ([ip-bytes (bytes 127 0 0 1)]) + (define ip (make-ip-address ip-bytes)) + (bytes-set! ip-bytes 0 255) + (check-equal? ip (make-ip-address "127.0.0.1") + "IP addresses should be immutable"))) (define (ip-address-string? val) (and (string? val)