lib/ionian/extension/socket.rb in ionian-0.6.8 vs lib/ionian/extension/socket.rb in ionian-0.6.9
- old
+ new
@@ -33,11 +33,11 @@
end
# Permit sending broadcast datagrams if true.
# ( SO_BROADCAST )
def broadcast= value
- param = value ? 1 : 0
+ param = (!!value && value != 0) ? 1 : 0
self.setsockopt ::Socket::SOL_SOCKET, ::Socket::SO_BROADCAST, [param].pack('i')
end
alias_method :broadcast?, :broadcast
@@ -60,11 +60,11 @@
# sending a RST packet.
# ( SO_LINGER )
def linger= enable, time: 60
# TODO: Passing a kwarg doesn't work here because of the
# assignment operator. Causes parser error.
- param = enable ? 1 : 0
+ param = (!!enable && enable != 0) ? 1 : 0
self.setsockopt ::Socket::SOL_SOCKET, ::Socket::SO_LINGER, [param, time.to_i].pack('ii')
end
alias_method :linger?, :linger
@@ -79,11 +79,11 @@
alias_method :reuse_addr?, :reuse_addr
# Allows local address reuse if true.
# ( SO_REUSEADDR )
def reuse_addr= value
- param = value ? 1 : 0
+ param = (!!value && value != 0) ? 1 : 0
self.setsockopt ::Socket::SOL_SOCKET, ::Socket::SO_REUSEADDR, [param].pack('i')
end
# Returns the time to live (hop limit).
# ( IP_TTL )
@@ -111,11 +111,11 @@
alias_method :no_delay?, :no_delay
# Disables the Nagle algorithm if true.
# ( TCP_NODELAY )
def no_delay= value
- param = value ? 1 : 0
+ param = (!!value && value != 0) ? 1 : 0
self.setsockopt ::Socket::IPPROTO_TCP, ::Socket::TCP_NODELAY, [param].pack('i')
end
# Returns true if multiple writes are buffered into a single segment.
# See #recork.
@@ -136,11 +136,11 @@
# the first corked byte is written.
# See #recork.
# Linux only.
# ( TCP_CORK )
def cork= value
- param = value ? 1 : 0
+ param = (!!value && value != 0) ? 1 : 0
self.setsockopt ::Socket::IPPROTO_TCP, ::Socket::TCP_CORK, [param].pack('i')
end
# Unsets cork to transmit data, then reapplies cork.
# ( TCP_CORK )
@@ -223,10 +223,10 @@
alias_method :ip_multicast_loop?, :ip_multicast_loop
# Enables loopback of outgoing multicasts if true.
# ( IP_MULTICAST_LOOP )
def ip_multicast_loop= value
- param = value ? 1 : 0
+ param = (!!value && value != 0) ? 1 : 0
self.setsockopt ::Socket::IPPROTO_IP, ::Socket::IP_MULTICAST_LOOP, [param].pack('C')
end
# Not yet implemented.
def ipv6_add_membership
\ No newline at end of file