Skip to content

Commit

Permalink
treat port nil as 0 for pack_sockaddr_in
Browse files Browse the repository at this point in the history
Ensure compatability with MRI Ruby

closes jruby#3156
  • Loading branch information
reuben-sutton committed Aug 3, 2015
1 parent 013c46f commit ddbb929
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 1 deletion.
6 changes: 5 additions & 1 deletion core/src/main/java/org/jruby/ext/socket/SocketUtils.java
Expand Up @@ -129,9 +129,13 @@ public static IRubyObject getservbyname(ThreadContext context, IRubyObject[] arg
}

public static IRubyObject pack_sockaddr_in(ThreadContext context, IRubyObject port, IRubyObject host) {
int portNum = port instanceof RubyString ?
int portNum = 0;

if(!port.isNil()){
portNum = port instanceof RubyString ?
Integer.parseInt(port.convertToString().toString()) :
RubyNumeric.fix2int(port);
}

return Sockaddr.pack_sockaddr_in(
context,
Expand Down
3 changes: 3 additions & 0 deletions spec/ruby/library/socket/shared/pack_sockaddr.rb
Expand Up @@ -13,6 +13,9 @@

sockaddr_in = Socket.pack_sockaddr_in '80', '127.0.0.1'
Socket.unpack_sockaddr_in(sockaddr_in).should == [80, '127.0.0.1']

sockaddr_in = Socket.pack_sockaddr_in nil, '127.0.0.1'
Socket.unpack_sockaddr_in(sockaddr_in).should == [0, '127.0.0.1']
end
end

Expand Down

0 comments on commit ddbb929

Please sign in to comment.