16
16
public class TunnelMessageParser implements Handler <Buffer > {
17
17
18
18
private static final Logger log = LoggerFactory .getLogger (TunnelMessageParser .class );
19
- private Buffer buf = Buffer .buffer ();
19
+ protected Buffer buf = Buffer .buffer ();
20
20
21
21
/**
22
22
* 最大长度,单位字节。防止对方构造超长字段,占用内存。
23
23
*/
24
- private final int maxLength = 1024 * 1024 ;
24
+ protected final int maxLength = 1024 * 1024 ;
25
25
26
26
/**
27
27
* 预设长度起始位置
28
28
*/
29
- private final int lengthFieldOffset = 0 ;
29
+ protected final int lengthFieldOffset = 0 ;
30
30
31
31
/**
32
32
* 预设长度占用的字节数
33
33
*/
34
- private final int lengthFieldLength = 4 ;
34
+ protected final int lengthFieldLength = 4 ;
35
35
/**
36
36
* 消息类型起始位置
37
37
*/
38
- private final int typeFieldOffset = 4 ;
38
+ protected final int typeFieldOffset = 4 ;
39
39
40
40
/**
41
41
* 消息类型占用的字节数
42
42
*/
43
- private final int typeFieldLength = 2 ;
43
+ protected final int typeFieldLength = 2 ;
44
44
45
45
/**
46
46
* 消息体起始位置
47
47
*/
48
- private final int bodyFieldOffset = 6 ;
48
+ protected final int bodyFieldOffset = 6 ;
49
49
50
- private final Handler <Buffer > outputHandler ;
50
+ protected final Handler <Buffer > outputHandler ;
51
51
52
- private final NetSocket netSocket ;
52
+ protected final NetSocket netSocket ;
53
53
54
54
public TunnelMessageParser (Handler <Buffer > outputHandler ,
55
55
NetSocket netSocket ) {
@@ -68,7 +68,7 @@ public void handle(Buffer buffer) {
68
68
69
69
}
70
70
71
- private void parse () {
71
+ protected void parse () {
72
72
// 获取消息的预设总长度
73
73
int totalLength = buf .getInt (lengthFieldOffset );
74
74
// 校验预设总长度
@@ -77,8 +77,9 @@ private void parse() {
77
77
}
78
78
// 校验最大长度
79
79
if (totalLength > maxLength ) {
80
- log .warn ("too many bytes in length field, {} > {}, connection {} will be closed" ,
80
+ log .warn ("too many bytes in length field, {} > {}, connection {} -- {} will be closed" ,
81
81
totalLength , maxLength ,
82
+ netSocket .localAddress (),
82
83
netSocket .remoteAddress ());
83
84
netSocket .close ();
84
85
return ;
@@ -89,7 +90,10 @@ private void parse() {
89
90
try {
90
91
TunnelMessageType .fromCode (code );
91
92
} catch (Exception e ) {
92
- log .error ("invalid type, connection {} will be closed" , netSocket .remoteAddress (), e );
93
+ log .error ("invalid type, connection {} -- {} will be closed" ,
94
+ netSocket .localAddress (),
95
+ netSocket .remoteAddress (),
96
+ e );
93
97
netSocket .close ();
94
98
return ;
95
99
}
0 commit comments