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