diff --git a/etc/emq.conf b/etc/emq.conf index 681dc9b54..1042d880b 100644 --- a/etc/emq.conf +++ b/etc/emq.conf @@ -704,6 +704,11 @@ listener.tcp.external.tune_buffer = on ## Value: true | false listener.tcp.external.nodelay = true +## The SO_REUSEADDR flag for TCP listener. +## +## Value: true | false +listener.tcp.external.reuseaddr = true + ##-------------------------------------------------------------------- ## Internal TCP Listener for MQTT Protocol @@ -800,6 +805,11 @@ listener.tcp.internal.tune_buffer = on ## Value: true | false listener.tcp.internal.nodelay = false +## The SO_REUSEADDR flag for MQTT/TCP Listener. +## +## Value: true | false +listener.tcp.internal.reuseaddr = true + ##-------------------------------------------------------------------- ## MQTT/SSL - External SSL Listener for MQTT Protocol @@ -1029,10 +1039,15 @@ listener.ssl.external.certfile = {{ platform_etc_dir }}/certs/cert.pem ## Value: true | false ## listener.ssl.external.nodelay = true +## The SO_REUSEADDR flag for MQTT/SSL Listener. +## +## Value: true | false +listener.ssl.external.reuseaddr = true + ##-------------------------------------------------------------------- ## External WebSocket Listener for MQTT Protocol -## listener.ws. is the IP address and port that the MQTT/Websocket +## listener.ws. is the IP address and port that the MQTT/WebSocket ## listener will bind. ## ## Value: IP:Port | Port @@ -1040,29 +1055,29 @@ listener.ssl.external.certfile = {{ platform_etc_dir }}/certs/cert.pem ## Examples: 8083, 127.0.0.1:8083, ::1:8083 listener.ws.external = 8083 -## The acceptor pool for external MQTT/Websocket listener. +## The acceptor pool for external MQTT/WebSocket listener. ## ## Value: Number listener.ws.external.acceptors = 4 -## Maximum number of concurrent MQTT/Websocket connections. +## Maximum number of concurrent MQTT/WebSocket connections. ## ## Value: Number listener.ws.external.max_clients = 102400 -## TODO: Zone of the external MQTT/Websocket listener belonged to. +## TODO: Zone of the external MQTT/WebSocket listener belonged to. ## ## Value: String ## listener.ws.external.zone = external -## Mountpoint of the MQTT/Websocket Listener. +## Mountpoint of the MQTT/WebSocket Listener. ## ## See: listener.tcp..mountpoint ## ## Value: String ## listener.ws.external.mountpoint = external/ -## The access control for the MQTT/Websocket listener. +## The access control for the MQTT/WebSocket listener. ## ## See: listener.tcp..access ## @@ -1084,35 +1099,35 @@ listener.ws.external.access.1 = allow all ## Value: Duration ## listener.ws.external.proxy_protocol_timeout = 3s -## The TCP backlog of external MQTT/Websocket Listener. +## The TCP backlog of external MQTT/WebSocket Listener. ## ## See: listener.tcp..backlog ## ## Value: Number >= 0 listener.ws.external.backlog = 1024 -## The TCP send timeout for external MQTT/Websocket connections. +## The TCP send timeout for external MQTT/WebSocket connections. ## ## See: listener.tcp..send_timeout ## ## Value: Duration listener.ws.external.send_timeout = 15s -## Close the MQTT/Websocket connection if send timeout. +## Close the MQTT/WebSocket connection if send timeout. ## ## See: listener.tcp..send_timeout_close ## ## Value: on | off listener.ws.external.send_timeout_close = on -## The TCP receive buffer(os kernel) for external MQTT/Websocket connections. +## The TCP receive buffer(os kernel) for external MQTT/WebSocket connections. ## ## See: listener.tcp..recbuf ## ## Value: Bytes ## listener.ws.external.recbuf = 4KB -## The TCP send buffer(os kernel) for external MQTT/Websocket connections. +## The TCP send buffer(os kernel) for external MQTT/WebSocket connections. ## ## See: listener.tcp..sndbuf ## @@ -1133,17 +1148,22 @@ listener.ws.external.send_timeout_close = on ## Value: on | off listener.ws.external.tune_buffer = on -## The TCP_NODELAY flag for external MQTT/Websocket connections. +## The TCP_NODELAY flag for external MQTT/WebSocket connections. ## ## See: listener.tcp..nodelay ## ## Value: true | false listener.ws.external.nodelay = true +## The SO_REUSEADDR flag for MQTT/WebSocket Listener. +## +## Value: true | false +listener.ws.external.reuseaddr = true + ##-------------------------------------------------------------------- ## External WebSocket/SSL listener for MQTT Protocol -## listener.wss. is the IP address and port that the MQTT/Websocket/SSL +## listener.wss. is the IP address and port that the MQTT/WebSocket/SSL ## listener will bind. ## ## Value: IP:Port | Port @@ -1151,7 +1171,7 @@ listener.ws.external.nodelay = true ## Examples: 8084, 127.0.0.1:8084, ::1:8084 listener.wss.external = 8084 -## The acceptor pool for external MQTT/Websocket/SSL listener. +## The acceptor pool for external MQTT/WebSocket/SSL listener. ## ## Value: Number listener.wss.external.acceptors = 4 @@ -1161,19 +1181,19 @@ listener.wss.external.acceptors = 4 ## Value: Number listener.wss.external.max_clients = 64 -## TODO: Zone of the external MQTT/Websocket/SSL listener belonged to. +## TODO: Zone of the external MQTT/WebSocket/SSL listener belonged to. ## ## Value: String ## listener.wss.external.zone = external -## Mountpoint of the MQTT/Websocket/SSL Listener. +## Mountpoint of the MQTT/WebSocket/SSL Listener. ## ## See: listener.tcp..mountpoint ## ## Value: String ## listener.wss.external.mountpoint = inbound/ -## The access control rules for the MQTT/Websocket/SSL listener. +## The access control rules for the MQTT/WebSocket/SSL listener. ## ## See: listener.tcp..access. ## @@ -1269,35 +1289,35 @@ listener.wss.external.certfile = {{ platform_etc_dir }}/certs/cert.pem ## Value: cn | dn ## listener.wss.external.peer_cert_as_username = cn -## TCP backlog for the Websocket/SSL connection. +## TCP backlog for the WebSocket/SSL connection. ## ## See listener.tcp..backlog ## ## Value: Number >= 0 listener.wss.external.backlog = 1024 -## The TCP send timeout for the Websocket/SSL connection. +## The TCP send timeout for the WebSocket/SSL connection. ## ## See: listener.tcp..send_timeout ## ## Value: Duration listener.wss.external.send_timeout = 15s -## Close the Websocket/SSL connection if send timeout. +## Close the WebSocket/SSL connection if send timeout. ## ## See: listener.tcp..send_timeout_close ## ## Value: on | off listener.wss.external.send_timeout_close = on -## The TCP receive buffer(os kernel) for the Websocket/SSL connections. +## The TCP receive buffer(os kernel) for the WebSocket/SSL connections. ## ## See: listener.tcp..recbuf ## ## Value: Bytes ## listener.wss.external.recbuf = 4KB -## The TCP send buffer(os kernel) for the Websocket/SSL connections. +## The TCP send buffer(os kernel) for the WebSocket/SSL connections. ## ## See: listener.tcp..sndbuf ## @@ -1311,13 +1331,18 @@ listener.wss.external.send_timeout_close = on ## Value: Bytes ## listener.wss.external.buffer = 4KB -## The TCP_NODELAY flag for Websocket/SSL connections. +## The TCP_NODELAY flag for WebSocket/SSL connections. ## ## See: listener.tcp..nodelay ## ## Value: true | false ## listener.wss.external.nodelay = true +## The SO_REUSEADDR flag for WebSocket/SSL listener. +## +## Value: true | false +listener.wss.external.reuseaddr = true + ##-------------------------------------------------------------------- ## HTTP Management API Listener diff --git a/priv/emq.schema b/priv/emq.schema index 954f1bdea..b07055ead 100644 --- a/priv/emq.schema +++ b/priv/emq.schema @@ -850,6 +850,11 @@ end}. hidden ]}. +{mapping, "listener.tcp.$name.reuseaddr", "emqttd.listeners", [ + {datatype, {enum, [true, false]}}, + hidden +]}. + %%-------------------------------------------------------------------- %% SSL Listeners @@ -932,6 +937,11 @@ end}. hidden ]}. +{mapping, "listener.ssl.$name.reuseaddr", "emqttd.listeners", [ + {datatype, {enum, [true, false]}}, + hidden +]}. + {mapping, "listener.ssl.$name.tls_versions", "emqttd.listeners", [ {datatype, string} ]}. @@ -1067,6 +1077,11 @@ end}. hidden ]}. +{mapping, "listener.ws.$name.reuseaddr", "emqttd.listeners", [ + {datatype, {enum, [true, false]}}, + hidden +]}. + %%-------------------------------------------------------------------- %% MQTT/WebSocket/SSL Listeners @@ -1148,6 +1163,11 @@ end}. hidden ]}. +{mapping, "listener.wss.$name.reuseaddr", "emqttd.listeners", [ + {datatype, {enum, [true, false]}}, + hidden +]}. + {mapping, "listener.wss.$name.tls_versions", "emqttd.listeners", [ {datatype, string} ]}. @@ -1239,7 +1259,8 @@ end}. {recbuf, cuttlefish:conf_get(Prefix ++ ".recbuf", Conf, undefined)}, {sndbuf, cuttlefish:conf_get(Prefix ++ ".sndbuf", Conf, undefined)}, {buffer, cuttlefish:conf_get(Prefix ++ ".buffer", Conf, undefined)}, - {nodelay, cuttlefish:conf_get(Prefix ++ ".nodelay", Conf, true)}]) + {nodelay, cuttlefish:conf_get(Prefix ++ ".nodelay", Conf, true)}, + {reuseaddr, cuttlefish:conf_get(Prefix ++ ".reuseaddr", Conf, true)}]) end, SplitFun = fun(undefined) -> undefined; (S) -> string:tokens(S, ",") end, @@ -1378,6 +1399,11 @@ end}. hidden ]}. +{mapping, "listener.api.$name.reuseaddr", "emqttd.listeners", [ + {datatype, {enum, [true, false]}}, + hidden +]}. + {mapping, "listener.api.$name.handshake_timeout", "emqttd.listeners", [ {datatype, {duration, ms}} ]}.