@@ -120,8 +120,17 @@ async def run(port: int, destination: str, new: int, transport: str, tls: int) -
120120
121121 if transport == "tcp" :
122122 listen_addrs = get_available_interfaces (port )
123- if transport == "ws" :
123+ elif transport == "ws" :
124124 listen_addrs = [multiaddr .Multiaddr (f"/ip4/127.0.0.1/tcp/{ port } /ws" )]
125+ elif transport == "quic" :
126+ # QUIC uses UDP addresses with /quic-v1 suffix
127+ quic_addrs = []
128+ for addr in get_available_interfaces (port ):
129+ addr_str = str (addr ).replace ("/tcp/" , "/udp/" ) + "/quic-v1"
130+ quic_addrs .append (multiaddr .Multiaddr (addr_str ))
131+ listen_addrs = quic_addrs
132+ else :
133+ raise ValueError (f"Unknown transport: { transport } . Use tcp, ws, or quic." )
125134
126135 if new == 1 :
127136 libp2p .utils .paths .ED25519_PATH = Path ("libp2p-forge/peer2/ed25519.pem" )
@@ -148,11 +157,15 @@ async def run(port: int, destination: str, new: int, transport: str, tls: int) -
148157 NOISE_PROTOCOL_ID : noise_transport ,
149158 }
150159
160+ # Create host with QUIC support if transport is quic
161+ enable_quic = transport == "quic"
162+
151163 host = new_host (
152164 key_pair = key_pair ,
153165 listen_addrs = listen_addrs ,
154166 sec_opt = security_options ,
155167 enable_autotls = enable_autotls ,
168+ enable_quic = enable_quic ,
156169 )
157170
158171 base_identify_handler = identify_handler_for (host , use_varint_format = False )
@@ -242,7 +255,7 @@ def main() -> None:
242255 "--transport" ,
243256 default = "tcp" ,
244257 type = str ,
245- help = "Choose the transport layer for ping TCP/WS " ,
258+ help = "Choose the transport layer: tcp, ws, or quic " ,
246259 )
247260
248261 args = parser .parse_args ()
0 commit comments