# Socket.unpack\_sockaddr\_in(Socket.sockaddr\_un("/tmp/s")) is \[

**URL:** <https://www.ruby-forum.com/t/socket-unpack-sockaddr-in-socket-sockaddr-un-tmp-s-is/62467>\
**Category:** Development\
**Created:** [June 5, 2006, 7:19am UTC](https://www.ruby-forum.com/t/socket-unpack-sockaddr-in-socket-sockaddr-un-tmp-s-is/62467 "2006-06-05T07:19:55Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [June 5, 2006, 7:19am UTC](https://www.ruby-forum.com/t/socket-unpack-sockaddr-in-socket-sockaddr-un-tmp-s-is/62467/1 "2006-06-05T07:19:55Z")

</div>

e$B$U$H!"e(Bsockaddr\_in e$B$re(B unpack\_sockaddr\_un e$B$7$?$j!"e(B  
sockaddr\_un e$B$re(B unpack\_sockaddr\_in e$B$7$?$j$7$F$b%(%i!\<$K$J$i$:e(B  
e$B$K$J$s$+CM$,JV$C$F$/$k$3$H$K5$$,$D$-$^$7$?!#e(B

% ruby -v -rsocket -e ‘p  
Socket.unpack\_sockaddr\_un(Socket.sockaddr\_in(80, “localhost”))’  
ruby 1.9.0 (2006-06-04) [i686-linux]  
“”  
% ruby -v -rsocket -e ‘p  
Socket.unpack\_sockaddr\_in(Socket.sockaddr\_un("/tmp/s"))’  
ruby 1.9.0 (2006-06-04) [i686-linux]  
[12148, “localhost”]

e$B$3$l$C$F%(%i!\<$N$[$&$,$$$$$s$8$c$J$$$G$7$g$&$+!#e(B

# Index: ext/socket/socket.c

RCS file: /src/ruby/ext/socket/socket.c,v  
retrieving revision 1.168  
diff -u -p -r1.168 socket.c  
— ext/socket/socket.c 4 Jun 2006 11:43:16 -0000 1.168  
+++ ext/socket/socket.c 5 Jun 2006 05:15:53 -0000  
@@ -3512,6 +3512,17 @@ sock\_s\_unpack\_sockaddr\_in(self, addr)  
VALUE host;

```
 sockaddr = (struct sockaddr_in*)StringValuePtr(addr);

```

- if (((struct sockaddr \*)sockaddr)-\>sa\_family != AF\_INET  
+#ifdef INET6
- 

```
   && ((struct sockaddr *)sockaddr)->sa_family != AF_INET6

```

+#endif

- 

```
   ) {

```

+#ifdef INET6

- 

```
   rb_raise(rb_eArgError, "not an AF_INET/AF_INET6 sockaddr");

```

+#else

- 

```
   rb_raise(rb_eArgError, "not an AF_INET sockaddr");

```

+#endif

- }  
host = make\_ipaddr((struct sockaddr\*)sockaddr);  
OBJ\_INFECT(host, addr);  
return rb\_assoc\_new(INT2NUM(ntohs(sockaddr-\>sin\_port)), host);  
@@ -3549,6 +3560,9 @@ sock\_s\_unpack\_sockaddr\_un(self, addr)  
VALUE path;

- if (((struct sockaddr \*)sockaddr)-\>sa\_family != AF\_UNIX) {

- 

```
   rb_raise(rb_eArgError, "not an AF_UNIX sockaddr");

```

- }  
if (sizeof(struct sockaddr\_un) \< RSTRING(addr)-\>len) {  
rb\_raise(rb\_eTypeError, “too long sockaddr\_un - %ld longer than %d”,  
RSTRING(addr)-\>len, sizeof(struct sockaddr\_un));

---

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [June 5, 2006, 8:32am UTC](https://www.ruby-forum.com/t/socket-unpack-sockaddr-in-socket-sockaddr-un-tmp-s-is/62467/2 "2006-06-05T08:32:37Z")

</div>

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:28691]  
Socket.unpack\_sockaddr\_in(Socket.sockaddr\_un(”/tmp/s")) is [12148,  
“localhost”]?"  
on Mon, 5 Jun 2006 14:19:30 +0900, Tanaka A. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
writes:

|e$B$U$H!“e(Bsockaddr\_in e$B$re(B unpack\_sockaddr\_un e$B$7$?$j!“e(B  
|sockaddr\_un e$B$re(B unpack\_sockaddr\_in e$B$7$?$j$7$F$b%(%i!\<$K$J$i$:e(B  
|e$B$K$J$s$+CM$,JV$C$F$/$k$3$H$K5$$,$D$-$^$7$?!#e(B  
|  
|% ruby -v -rsocket -e ‘p Socket.unpack\_sockaddr\_un(Socket.sockaddr\_in(80, “localhost”))’  
|ruby 1.9.0 (2006-06-04) [i686-linux]  
|””  
|% ruby -v -rsocket -e ‘p Socket.unpack\_sockaddr\_in(Socket.sockaddr\_un(“/tmp/s”))’  
|ruby 1.9.0 (2006-06-04) [i686-linux]  
|[12148, “localhost”]  
|  
|e$B$3$l$C$F%(%i!\<$N$[$&$,$$$$$s$8$c$J$$$G$7$g$&$+!#e(B

e$BF10U$7$^$9!#%3%\_%C%H$7$F$/$@$5$$!#e(B
