Skip to content

Commit e09f425

Browse files
committed
Remove explicit DNS lookups from JS IP socket connect & bind
1 parent 5af859e commit e09f425

File tree

2 files changed

+7
-14
lines changed

2 files changed

+7
-14
lines changed

io/js/src/main/scala/fs2/io/net/AsyncSocketsProvider.scala

+4-4
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import cats.effect.{Async, Resource}
2727
import cats.effect.std.Dispatcher
2828
import cats.effect.syntax.all._
2929
import cats.syntax.all._
30-
import com.comcast.ip4s.{IpAddress, Port, SocketAddress, UnixSocketAddress}
30+
import com.comcast.ip4s.{Host, IpAddress, Port, SocketAddress, UnixSocketAddress}
3131
import fs2.concurrent.Channel
3232
import fs2.io.internal.facade
3333

@@ -39,7 +39,7 @@ private[net] abstract class AsyncSocketsProvider[F[_]](implicit F: Async[F]) {
3939
options.traverse_(option => option.key.set(socket, option.value))
4040

4141
protected def connectIpOrUnix(
42-
to: Either[SocketAddress[IpAddress], UnixSocketAddress],
42+
to: Either[SocketAddress[Host], UnixSocketAddress],
4343
options: List[SocketOption]
4444
): Resource[F, Socket[F]] =
4545
(for {
@@ -92,7 +92,7 @@ private[net] abstract class AsyncSocketsProvider[F[_]](implicit F: Async[F]) {
9292
} yield socket).adaptError { case IOException(ex) => ex }
9393

9494
protected def bindIpOrUnix(
95-
address: Either[SocketAddress[IpAddress], UnixSocketAddress],
95+
address: Either[SocketAddress[Host], UnixSocketAddress],
9696
options: List[SocketOption]
9797
): Resource[F, ServerSocket[F]] =
9898
(for {
@@ -125,7 +125,7 @@ private[net] abstract class AsyncSocketsProvider[F[_]](implicit F: Async[F]) {
125125
} <* F.delay {
126126
address match {
127127
case Left(addr) =>
128-
if (addr.host.isWildcard)
128+
if (addr.host.isInstanceOf[IpAddress] && addr.host.asInstanceOf[IpAddress].isWildcard)
129129
server.listen(addr.port.value, () => cb(Right(())))
130130
else
131131
server.listen(addr.port.value, addr.host.toString, () => cb(Right(())))

io/js/src/main/scala/fs2/io/net/IpSocketsProviderPlatform.scala

+3-10
Original file line numberDiff line numberDiff line change
@@ -24,30 +24,23 @@ package io
2424
package net
2525

2626
import cats.effect.{Async, Resource}
27-
import com.comcast.ip4s.{Dns, Host, SocketAddress}
27+
import com.comcast.ip4s.{Host, SocketAddress}
2828

2929
private[net] trait IpSocketsProviderCompanionPlatform { self: IpSocketsProvider.type =>
3030

3131
private[net] def forAsync[F[_]: Async]: IpSocketsProvider[F] =
32-
forAsyncAndDns[F](implicitly, Dns.forAsync)
33-
34-
private def forAsyncAndDns[F[_]: Async: Dns]: IpSocketsProvider[F] =
3532
new AsyncSocketsProvider[F] with IpSocketsProvider[F] {
3633

3734
override def connect(
3835
address: SocketAddress[Host],
3936
options: List[SocketOption]
4037
): Resource[F, Socket[F]] =
41-
Resource.eval(address.host.resolve[F]).flatMap { ip =>
42-
connectIpOrUnix(Left(SocketAddress(ip, address.port)), options)
43-
}
38+
connectIpOrUnix(Left(address), options)
4439

4540
override def bind(
4641
address: SocketAddress[Host],
4742
options: List[SocketOption]
4843
): Resource[F, ServerSocket[F]] =
49-
Resource.eval(address.host.resolve[F]).flatMap { ip =>
50-
bindIpOrUnix(Left(SocketAddress(ip, address.port)), options)
51-
}
44+
bindIpOrUnix(Left(address), options)
5245
}
5346
}

0 commit comments

Comments
 (0)