Skip to content

Commit

Permalink
Add more IPv6 Socket tests
Browse files Browse the repository at this point in the history
  • Loading branch information
leto committed Nov 26, 2010
1 parent a34a716 commit e262295
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 5 deletions.
4 changes: 4 additions & 0 deletions src/io/socket_unix.c
Original file line number Diff line number Diff line change
Expand Up @@ -648,6 +648,10 @@ get_sockaddr_in(PARROT_INTERP, ARGIN(PMC * sockaddr), ARGIN(const char* host),
ASSERT_ARGS(get_sockaddr_in)

struct sockaddr_in * const sa = (struct sockaddr_in*)VTABLE_get_pointer(interp, sockaddr);

/* FIXME ::1, which is localhost in IPv6, does not seem to be
handled properly by the following code
*/
# ifdef PARROT_DEF_INET_ATON
if (inet_aton(host, &sa->sin_addr) != 0) {
# else
Expand Down
20 changes: 15 additions & 5 deletions t/pmc/socket_ipv6.t
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ IPv6-related tests for the Socket PMC.
.sub main :main
.include 'test_more.pir'

plan(4)
plan(8)

check_for_ipv6()

Expand Down Expand Up @@ -56,35 +56,45 @@ IPv6-related tests for the Socket PMC.
sock = new 'Socket'

sock.'socket'(.PIO_PF_INET6, .PIO_SOCK_STREAM, .PIO_PROTO_TCP)
sockaddr = sock."sockaddr"("localhost",80, .PIO_PF_INET6)
isa_ok(sockaddr,'Sockaddr',"A TCP ipv6 sockaddr to localhost was set")

sockaddr = sock."sockaddr"("::1",80, .PIO_PF_INET6)
ok(sockaddr,"A TCP ipv6 sockaddr was set")
isa_ok(sockaddr,'Sockaddr',"A TCP ipv6 sockaddr to ::1 was set")
.end

.sub test_raw_tcp_socket6
.local pmc sock, sockaddr
sock = new 'Socket'

sock.'socket'(.PIO_PF_INET6, .PIO_SOCK_RAW, .PIO_PROTO_TCP)
sockaddr = sock."sockaddr"("localhost",80,.PIO_PF_INET6)
isa_ok(sockaddr,'Sockaddr',"A raw TCP ipv6 sockaddr to localhost was set:")
sockaddr = sock."sockaddr"("::1",80,.PIO_PF_INET6)
ok(sockaddr,"A raw TCP ipv6 sockaddr was set")
isa_ok(sockaddr,'Sockaddr',"A raw TCP ipv6 sockaddr to ::1 was set:")
.end

.sub test_udp_socket6
.local pmc sock, sockaddr
sock = new 'Socket'

sock.'socket'(.PIO_PF_INET6, .PIO_SOCK_STREAM, .PIO_PROTO_UDP)
sockaddr = sock."sockaddr"("localhost",80,.PIO_PF_INET6)
isa_ok(sockaddr,'Sockaddr', "A UDP ipv6 sockaddr to localhost was set:")

sockaddr = sock."sockaddr"("::1",80,.PIO_PF_INET6)
ok(sockaddr,"A UDP ipv6 sockaddr was set")
isa_ok(sockaddr,'Sockaddr', "A UDP ipv6 sockaddr to ::1 was set:")
.end

.sub test_raw_udp_socket6
.local pmc sock, sockaddr
sock = new 'Socket'

sock.'socket'(.PIO_PF_INET6, .PIO_SOCK_RAW, .PIO_PROTO_UDP)
sockaddr = sock."sockaddr"("localhost",80,.PIO_PF_INET6)
isa_ok(sockaddr,'Sockaddr', "A raw UDP ipv6 sockaddr to localhost was set: ")
sockaddr = sock."sockaddr"("::1",80,.PIO_PF_INET6)
ok(sockaddr,"A raw UDP ipv6 sockaddr was set")
isa_ok(sockaddr,'Sockaddr', "A raw UDP ipv6 sockaddr to ::1 was set: ")
.end


Expand Down

0 comments on commit e262295

Please sign in to comment.