diff --git a/src/emqx_channel.erl b/src/emqx_channel.erl index 59ff7c1ef..6e85acf26 100644 --- a/src/emqx_channel.erl +++ b/src/emqx_channel.erl @@ -155,7 +155,8 @@ caps(#channel{clientinfo = #{zone := Zone}}) -> %%-------------------------------------------------------------------- -spec(init(emqx_types:conninfo(), proplists:proplist()) -> channel()). -init(ConnInfo = #{peername := {PeerHost, _Port}}, Options) -> +init(ConnInfo = #{peername := {PeerHost, _Port}, + sockname := {_Host, SockPort}}, Options) -> Zone = proplists:get_value(zone, Options), Peercert = maps:get(peercert, ConnInfo, undefined), Username = case peer_cert_as_username(Options) of @@ -169,6 +170,7 @@ init(ConnInfo = #{peername := {PeerHost, _Port}}, Options) -> ClientInfo = #{zone => Zone, protocol => Protocol, peerhost => PeerHost, + sockport => SockPort, peercert => Peercert, clientid => undefined, username => Username, diff --git a/src/emqx_types.erl b/src/emqx_types.erl index 7b887faf8..b5caa49d7 100644 --- a/src/emqx_types.erl +++ b/src/emqx_types.erl @@ -124,6 +124,7 @@ -type(clientinfo() :: #{zone := zone(), protocol := protocol(), peerhost := peerhost(), + sockport := non_neg_integer(), clientid := clientid(), username := username(), peercert := esockd_peercert:peercert(),