This repository was archived by the owner on Feb 20, 2022. It is now read-only.
File tree Expand file tree Collapse file tree 1 file changed +11
-3
lines changed
unity-project/Assets/Moulin/DDP/websocket Expand file tree Collapse file tree 1 file changed +11
-3
lines changed Original file line number Diff line number Diff line change @@ -67,22 +67,30 @@ public override async Task ConnectAsync()
67
67
await Task . Factory . StartNew (
68
68
async ( ) =>
69
69
{
70
- ArraySegment < byte > buffer = new ArraySegment < byte > ( new byte [ 1024 ] ) ;
71
70
if ( webSocket . State == WebSocketState . Open )
72
71
{
73
72
OnOpen ? . Invoke ( ) ;
74
73
}
75
74
try
76
75
{
76
+ //Lets assume messages do not get bigger than 10 MB
77
+ int maxSize = 10 * 1024 * 1024 ;
78
+ byte [ ] buffer = new byte [ maxSize ] ;
77
79
while ( true )
78
80
{
79
- WebSocketReceiveResult result = await webSocket . ReceiveAsync ( buffer , cts . Token ) ;
81
+ WebSocketReceiveResult result = await webSocket . ReceiveAsync ( new ArraySegment < byte > ( buffer ) , cts . Token ) ;
80
82
if ( webSocket . State != WebSocketState . Open )
81
83
{
82
84
break ;
83
85
}
86
+ if ( result . Count >= maxSize || ! result . EndOfMessage )
87
+ {
88
+ OnError ? . Invoke ( "Maximum size for message exceeded" ) ;
89
+ // the next message will also fail because we will send incorrect JSON to the encoder.
90
+ continue ;
91
+ }
84
92
85
- string json = Encoding . UTF8 . GetString ( buffer . Array , 0 , result . Count ) ;
93
+ string json = Encoding . UTF8 . GetString ( buffer , 0 , result . Count ) ;
86
94
OnMessage ? . Invoke ( json ) ;
87
95
}
88
96
OnClose ? . Invoke ( true ) ;
You can’t perform that action at this time.
0 commit comments