Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
爱吃血肠
spring-framework
提交
ef13dbfc
S
spring-framework
项目概览
爱吃血肠
/
spring-framework
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
spring-framework
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
ef13dbfc
编写于
1月 02, 2014
作者:
R
Rossen Stoyanchev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Handle bad STOMP messages in StompSubProtocolHandler
Issue: SPR-11277
上级
1f49f994
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
27 addition
and
4 deletion
+27
-4
spring-websocket/src/main/java/org/springframework/web/socket/messaging/StompSubProtocolHandler.java
...amework/web/socket/messaging/StompSubProtocolHandler.java
+13
-4
spring-websocket/src/test/java/org/springframework/web/socket/messaging/StompSubProtocolHandlerTests.java
...rk/web/socket/messaging/StompSubProtocolHandlerTests.java
+14
-0
未找到文件。
spring-websocket/src/main/java/org/springframework/web/socket/messaging/StompSubProtocolHandler.java
浏览文件 @
ef13dbfc
...
...
@@ -97,16 +97,25 @@ public class StompSubProtocolHandler implements SubProtocolHandler {
public
void
handleMessageFromClient
(
WebSocketSession
session
,
WebSocketMessage
<?>
webSocketMessage
,
MessageChannel
outputChannel
)
{
Message
<?>
message
;
Message
<?>
message
=
null
;
Throwable
decodeFailure
=
null
;
try
{
Assert
.
isInstanceOf
(
TextMessage
.
class
,
webSocketMessage
);
String
payload
=
((
TextMessage
)
webSocketMessage
).
getPayload
();
String
payload
=
((
TextMessage
)
webSocketMessage
).
getPayload
();
ByteBuffer
byteBuffer
=
ByteBuffer
.
wrap
(
payload
.
getBytes
(
UTF8_CHARSET
));
message
=
this
.
stompDecoder
.
decode
(
byteBuffer
);
if
(
message
==
null
)
{
decodeFailure
=
new
IllegalStateException
(
"Not a valid STOMP frame: "
+
payload
);
}
}
catch
(
Throwable
ex
)
{
logger
.
error
(
"Failed to parse STOMP frame, WebSocket message payload"
,
ex
);
sendErrorMessage
(
session
,
ex
);
decodeFailure
=
ex
;
}
if
(
decodeFailure
!=
null
)
{
logger
.
error
(
"Failed to parse WebSocket message as STOMP frame"
,
decodeFailure
);
sendErrorMessage
(
session
,
decodeFailure
);
return
;
}
...
...
spring-websocket/src/test/java/org/springframework/web/socket/messaging/StompSubProtocolHandlerTests.java
浏览文件 @
ef13dbfc
...
...
@@ -34,6 +34,7 @@ import org.springframework.messaging.simp.stomp.StompDecoder;
import
org.springframework.messaging.simp.stomp.StompHeaderAccessor
;
import
org.springframework.messaging.support.MessageBuilder
;
import
org.springframework.web.socket.TextMessage
;
import
org.springframework.web.socket.WebSocketMessage
;
import
org.springframework.web.socket.handler.TestWebSocketSession
;
import
static
org
.
junit
.
Assert
.*;
...
...
@@ -119,4 +120,17 @@ public class StompSubProtocolHandlerTests {
assertEquals
(
0
,
this
.
session
.
getSentMessages
().
size
());
}
@Test
public
void
invalidStompCommand
()
{
TextMessage
textMessage
=
new
TextMessage
(
"FOO"
);
this
.
stompHandler
.
handleMessageFromClient
(
this
.
session
,
textMessage
,
this
.
channel
);
verifyZeroInteractions
(
this
.
channel
);
assertEquals
(
1
,
this
.
session
.
getSentMessages
().
size
());
TextMessage
actual
=
(
TextMessage
)
this
.
session
.
getSentMessages
().
get
(
0
);
assertTrue
(
actual
.
getPayload
().
startsWith
(
"ERROR"
));
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录