@@ -611,17 +611,6 @@ void WSLPeer::_wsl_frame_recv_chunk_callback(wslay_event_context_ptr ctx, const
611
611
}
612
612
}
613
613
614
- void WSLPeer::_wsl_frame_recv_end_callback (wslay_event_context_ptr ctx, void *user_data) {
615
- WSLPeer *peer = (WSLPeer *)user_data;
616
- PendingMessage &pm = peer->pending_message ;
617
- if (pm.opcode != 0 ) {
618
- // Only write the packet (since it's now completed).
619
- uint8_t is_string = pm.opcode == WSLAY_TEXT_FRAME ? 1 : 0 ;
620
- peer->in_buffer .write_packet (nullptr , pm.payload_size , &is_string);
621
- pm.clear ();
622
- }
623
- }
624
-
625
614
ssize_t WSLPeer::_wsl_send_callback (wslay_event_context_ptr ctx, const uint8_t *data, size_t len, int flags, void *user_data) {
626
615
WSLPeer *peer = (WSLPeer *)user_data;
627
616
Ref<StreamPeer> conn = peer->connection ;
@@ -669,8 +658,15 @@ void WSLPeer::_wsl_msg_recv_callback(wslay_event_context_ptr ctx, const struct w
669
658
670
659
if (op == WSLAY_PONG) {
671
660
peer->heartbeat_waiting = false ;
661
+ } else if (op == WSLAY_TEXT_FRAME || op == WSLAY_BINARY_FRAME) {
662
+ PendingMessage &pm = peer->pending_message ;
663
+ ERR_FAIL_COND (pm.opcode != op);
664
+ // Only write the packet (since it's now completed).
665
+ uint8_t is_string = pm.opcode == WSLAY_TEXT_FRAME ? 1 : 0 ;
666
+ peer->in_buffer .write_packet (nullptr , pm.payload_size , &is_string);
667
+ pm.clear ();
672
668
}
673
- // Ping, or message (already parsed in chunks) .
669
+ // Ping.
674
670
}
675
671
676
672
wslay_event_callbacks WSLPeer::_wsl_callbacks = {
@@ -679,7 +675,7 @@ wslay_event_callbacks WSLPeer::_wsl_callbacks = {
679
675
_wsl_genmask_callback,
680
676
_wsl_recv_start_callback,
681
677
_wsl_frame_recv_chunk_callback,
682
- _wsl_frame_recv_end_callback ,
678
+ nullptr ,
683
679
_wsl_msg_recv_callback
684
680
};
685
681
0 commit comments