BG95-M3 does not respond if data send contains null bytes in TCP send

Hi everyone, I am currently trying to integrate Arduino Websocket library to use with BG95-M3. Everything works normally until I notice that there is no respond from BG95 after sending data payload containing null byte. So I make a seperate test tcp to test to send that payload to portquiz.net, and it is indeed doesn’t respond. This is my log:

14:39:57.802 > AT+QIOPEN=1,0,"TCP","portquiz.net",80,0,0
14:39:57.802 > OK
14:39:57.802 >
14:39:57.802 > +QIOPEN: 0,0
14:39:57.802 >
14:39:57.802 > connect: 1, open: 1
14:39:58.900 > AT+QISTATE=1,0
14:39:58.900 > +QISTATE: 0,"TCP","35.180.139.74",80,24977,2,1,0,0,"uart1"
14:39:58.900 >
14:39:58.900 > OK
14:39:58.900 >
14:39:58.900 > Content to send:
14:39:58.900 > 81 FE 00 A3 BF 55 84 53 E4 67 A8 71 8C 34 E0 65 86 37 B5 37 92 36 E2 67 8D 78 E6 66 8E 66 A9 65 87 37 E5 7E 87 66 B3 66 8A 61 E7 30 8E 61 B4 37 9D 79 A6 11 D0 3A F0 1D D0 21 ED 35 D6 36 E5 27 D6 3A EA 71 93 2E A6 21 DA 34 F7 3C D1 77 BE 71 EF 3A F3 36 CD 00 F4 71 93 77 E7 3B DE 27 E3 3A D1 32 D7 27 
DE 21 ED 3C D1 77 BE 28 9D 38 EB 37 DA 39 A6 69 9D 18 FD 73 FC 3D E5 21 D8 3C EA 34 9F 26 F0 32 CB 3C EB 3D 9D 79 A6 25 DA 3B E0 3C CD 1B E5 3E DA 4D BE 71 F2 2C A4 30 D0 38 F4 32 D1 2C A4 3D DE 38 E1 71 C2 28 D9
14:39:58.900 > Content to send in char:
14:39:58.900 > � �  � � U � S � g � q � 4 � e � 7 � 7 � 6 � g � x � f � f � e � 7 � ~ � f � f � a � 0 � a � 7 � y �  � : �  � ! � 5 � 6 � ' � : � q � . � ! � 4 � < � w � q � : � 6 �  � q � w � ; � ' � : � 2 � ' � ! � < � w � ( � 8 � 7 � 9 � i �  � s � = � ! � < � 4 � & � 2 � < � = � y � % � ; � < �  > � M � q �
 , � 0 � 8 � 2 � , � = � 8 � q � ( �
14:39:58.900 > Command: AT+QISEND=0,171
14:39:58.900 > AT+QISEND=0,171
14:39:58.900 > > ��Response 1: [Timeout]
14:40:15.884 > Response 2: [Timeout]
14:40:20.889 > Response 1: [Timeout]
14:40:25.894 > Response 2: [Timeout]
14:40:30.883 > Response 1: [Timeout]
14:40:35.888 > Response 2: [Timeout]

This is the char array buffer I use to send:

const uint8_t buffer[] = {
        0x81, 0xFE, 0x00, 0xA3, 0xBF, 0x55, 0x84, 0x53, 0xE4, 0x67, 0xA8, 0x71, 0x8C, 0x34, 0xE0, 0x65, 0x86, 0x37, 0xB5, 0x37, 0x92, 
        0x36, 0xE2, 0x67, 0x8D, 0x78, 0xE6, 0x66, 0x8E, 0x66, 0xA9, 0x65, 0x87, 0x37, 0xE5, 0x7E, 0x87, 0x66, 0xB3, 0x66, 0x8A, 0x61, 0xE7, 0x30, 0x8E, 0x61, 
        0xB4, 0x37, 0x9D, 0x79, 0xA6, 0x11, 0xD0, 0x3A ,0xF0, 0x1D, 0xD0, 0x21, 0xED, 0x35, 0xD6, 0x36, 0xE5, 0x27, 0xD6, 0x3A, 0xEA, 0x71, 0x93, 0x2E, 0xA6, 
        0x21, 0xDA, 0x34, 0xF7, 0x3C, 0xD1, 0x77, 0xBE, 0x71, 0xEF, 0x3A, 0xF3, 0x36, 0xCD, 0x00, 0xF4, 0x71, 0x93, 0x77, 0xE7, 0x3B, 0xDE, 0x27, 0xE3, 0x3A, 0xD1, 0x32, 0xD7, 0x27,
        0xDE, 0x21, 0xED, 0x3C, 0xD1, 0x77, 0xBE, 0x28, 0x9D, 0x38, 0xEB, 0x37, 0xDA, 0x39, 0xA6, 0x69, 0x9D, 0x18, 0xFD, 0x73, 0xFC, 0x3D, 0xE5, 0x21, 0xD8, 0x3C, 0xEA, 0x34, 0x9F, 0x26, 
        0xF0, 0x32, 0xCB, 0x3C, 0xEB, 0x3D, 0x9D, 0x79, 0xA6, 0x25, 0xDA, 0x3B, 0xE0, 0x3C, 0xCD, 0x1B, 0xE5, 0x3E, 0xDA, 77, 0xBE, 0x71, 0xF2, 0x2C, 0xA4, 0x30, 0xD0, 0x38, 0xF4, 0x32,
        0xD1, 0x2C, 0xA4, 0x3D, 0xDE, 0x38, 0xE1, 0x71, 0xC2, 0x28, 0xD9
    };

Please check the sent string type configured by QICFG

This what I get from the config?

09:19:30.680 > AT+QICFG=?
09:19:30.680 > +QICFG: "transpktsize",(1-1460)
09:19:30.680 > +QICFG: "transwaittm",(0-20)
09:19:30.680 > +QICFG: "dataformat",(0,1),(0,1)
09:19:30.680 > +QICFG: "viewmode",(0,1)
09:19:30.680 > +QICFG: "recvind",(0,1)
09:19:30.680 > +QICFG: "sack",(0,1)
09:19:30.680 > +QICFG: "tcp/inactivetm",(0-65535)
09:19:30.680 > +QICFG: "tcp/keepalive",(0,1),(1-120),(25-100),(3-10)
09:19:30.680 > +QICFG: "tcp/retranscfg",(3-20),(5-1000)
09:19:30.680 > +QICFG: "ipv6prior",(0,1)
09:19:30.680 > +QICFG: "asyncmode",(0,1)
09:19:30.680 > +QICFG: "ip_filter",<ip4_addr>,<subnet_mask>
09:19:30.680 > +QICFG: "timestamp",(0,1)
09:19:30.680 >
09:19:30.680 > OK