Browse Source

add:mqtt支持ipv6

Dozingfiretruck 3 năm trước cách đây
mục cha
commit
7ced4c67c6

+ 5 - 0
components/network/libemqtt/luat_lib_mqtt.c

@@ -232,6 +232,7 @@ mqtt客户端创建
 @string 服务器地址,可以是域名, 也可以是ip
 @int  	端口号
 @bool/table  是否为ssl加密连接,默认不加密,true为无证书最简单的加密,table为有证书的加密 <br>server_cert 服务器ca证书数据 <br>client_cert 客户端ca证书数据 <br>client_key 客户端私钥加密数据 <br>client_password 客户端私钥口令数据
+@bool  是否为ipv6 默认不是
 @return userdata 若成功会返回mqtt客户端实例,否则返回nil
 @usage
 -- 普通TCP链接
@@ -327,6 +328,10 @@ static int l_mqtt_create(lua_State *L) {
 		lua_pop(L, 1);
 	}
 	
+	if (lua_isboolean(L, 5)){
+		opts.is_ipv6 = lua_toboolean(L, 5);
+	}
+
 	ret = luat_mqtt_set_connopts(mqtt_ctrl, &opts);
 
 	// TODO 判断ret, 如果初始化失败, 应该终止

+ 2 - 1
components/network/libemqtt/luat_mqtt.h

@@ -37,7 +37,8 @@ typedef struct luat_mqtt_connopts
 {
     const char* host;
     uint16_t port;
-    uint16_t is_tls;
+    uint8_t is_tls;
+	uint8_t is_ipv6;
     const char* server_cert;
     size_t server_cert_len;
     const char* client_cert;

+ 4 - 0
components/network/libemqtt/luat_mqtt_client.c

@@ -83,6 +83,10 @@ int luat_mqtt_set_connopts(luat_mqtt_ctrl_t *mqtt_ctrl, luat_mqtt_connopts_t *op
 		network_deinit_tls(mqtt_ctrl->netc);
 	}
 
+	if (opts->is_ipv6) {
+		network_connect_ipv6_domain(mqtt_ctrl->netc, 1);
+	}
+
     mqtt_ctrl->broker.socket_info = mqtt_ctrl;
     mqtt_ctrl->broker.send = luat_mqtt_send_packet;
     return 0;

+ 1 - 1
components/network/libhttp/luat_http_client.c

@@ -530,7 +530,7 @@ http客户端
 @string url地址
 @tabal  请求头 可选 例如{["Content-Type"] = "application/x-www-form-urlencoded"}
 @string body 可选
-@table  额外配置 可选 包含 timeout:超时时间单位ms 可选,默认10分钟,写0即永久等待 dst:下载路径,可选 adapter:选择使用网卡,可选 debug:是否打开debug信息,可选
+@table  额外配置 可选 包含 timeout:超时时间单位ms 可选,默认10分钟,写0即永久等待 dst:下载路径,可选 adapter:选择使用网卡,可选 debug:是否打开debug信息,可选,ipv6:是否为ipv6 默认不是,可选
 @string 服务器ca证书数据
 @string 客户端ca证书数据
 @string 客户端私钥加密数据