@@ -136,7 +136,6 @@ void rtsp_session_init(rtsp_session_t *session)
136136 session -> transport_protocol = RTSP_PROTOCOL_RTP ; /* Default protocol */
137137 session -> rtp_channel = 0 ;
138138 session -> rtcp_channel = 1 ;
139- session -> tcp_buffer_pos = 0 ;
140139
141140 /* Initialize RTP packet tracking */
142141 session -> current_seqn = 0 ;
@@ -1148,17 +1147,9 @@ static int rtsp_try_receive_response(rtsp_session_t *session)
11481147 /* For TCP interleaved mode, preserve any RTP data that came after PLAY response */
11491148 if (session -> transport_mode == RTSP_TRANSPORT_TCP && extra_data_len > 0 )
11501149 {
1151- /* Move extra data to tcp_buffer for processing */
1152- if (extra_data_len <= BUFFER_POOL_BUFFER_SIZE )
1153- {
1154- memcpy (session -> tcp_buffer , end_of_headers + 4 , extra_data_len );
1155- session -> tcp_buffer_pos = extra_data_len ;
1156- logger (LOG_DEBUG , "RTSP: Preserved %zu bytes of RTP data after PLAY response" , extra_data_len );
1157- }
1158- else
1159- {
1160- logger (LOG_ERROR , "RTSP: Extra data after PLAY response too large (%zu bytes), discarding" , extra_data_len );
1161- }
1150+ memmove (session -> response_buffer , end_of_headers + 4 , extra_data_len );
1151+ session -> response_buffer_pos = extra_data_len ;
1152+ logger (LOG_DEBUG , "RTSP: Preserved %zu bytes of RTP data after PLAY response" , extra_data_len );
11621153 }
11631154 session -> response_buffer_pos = 0 ;
11641155 }
@@ -1305,12 +1296,12 @@ int rtsp_handle_tcp_interleaved_data(rtsp_session_t *session, connection_t *conn
13051296{
13061297 int bytes_received ;
13071298
1308- if (session -> tcp_buffer_pos < BUFFER_POOL_BUFFER_SIZE )
1299+ if (session -> response_buffer_pos < RTSP_RESPONSE_BUFFER_SIZE )
13091300 {
13101301 /* Read data into local buffer (will be copied to zero-copy buffers later) */
13111302 bytes_received = recv (session -> socket ,
1312- session -> tcp_buffer + session -> tcp_buffer_pos ,
1313- BUFFER_POOL_BUFFER_SIZE - session -> tcp_buffer_pos , 0 );
1303+ session -> response_buffer + session -> response_buffer_pos ,
1304+ RTSP_RESPONSE_BUFFER_SIZE - session -> response_buffer_pos , 0 );
13141305 if (bytes_received < 0 )
13151306 {
13161307 /* Check if it's a non-blocking would-block error */
@@ -1322,48 +1313,48 @@ int rtsp_handle_tcp_interleaved_data(rtsp_session_t *session, connection_t *conn
13221313 return -1 ;
13231314 }
13241315
1325- session -> tcp_buffer_pos += bytes_received ;
1316+ session -> response_buffer_pos += bytes_received ;
13261317 }
13271318
13281319 /* Process interleaved data packets */
13291320 int bytes_forwarded = 0 ;
1330- while (session -> tcp_buffer_pos >= 4 )
1321+ while (session -> response_buffer_pos >= 4 )
13311322 {
13321323 /* Check for interleaved data packet: $ + channel + length(2 bytes) + data */
1333- if (session -> tcp_buffer [0 ] != '$' )
1324+ if (session -> response_buffer [0 ] != '$' )
13341325 {
13351326 /* Not interleaved data, might be RTSP response */
13361327 logger (LOG_DEBUG , "RTSP: Received non-interleaved data on TCP connection" );
13371328 break ;
13381329 }
13391330
1340- uint8_t channel = session -> tcp_buffer [1 ];
1341- uint16_t packet_length = (session -> tcp_buffer [2 ] << 8 ) | session -> tcp_buffer [3 ];
1331+ uint8_t channel = session -> response_buffer [1 ];
1332+ uint16_t packet_length = (session -> response_buffer [2 ] << 8 ) | session -> response_buffer [3 ];
13421333
13431334 /* Check if we have the complete packet and prevent buffer overflow */
1344- if (session -> tcp_buffer_pos < 4 + (size_t )packet_length )
1335+ if (session -> response_buffer_pos < 4 + (size_t )packet_length )
13451336 {
13461337 break ; /* Wait for more data */
13471338 }
13481339
13491340 /* Sanity check: prevent processing packets that are too large */
1350- if (packet_length > BUFFER_POOL_BUFFER_SIZE - 4 )
1341+ if (packet_length > RTSP_RESPONSE_BUFFER_SIZE - 4 )
13511342 {
13521343 logger (LOG_ERROR , "RTSP: Received packet too large (%d bytes, max %zu), attempting resync" ,
1353- packet_length , BUFFER_POOL_BUFFER_SIZE - 4 );
1344+ packet_length , RTSP_RESPONSE_BUFFER_SIZE - 4 );
13541345 /* Try to find next '$' marker to resync stream */
1355- uint8_t * next_marker = memchr (session -> tcp_buffer + 1 , '$' , session -> tcp_buffer_pos - 1 );
1346+ uint8_t * next_marker = memchr (session -> response_buffer + 1 , '$' , session -> response_buffer_pos - 1 );
13561347 if (next_marker )
13571348 {
1358- size_t skip = next_marker - session -> tcp_buffer ;
1359- memmove (session -> tcp_buffer , next_marker , session -> tcp_buffer_pos - skip );
1360- session -> tcp_buffer_pos -= skip ;
1349+ size_t skip = next_marker - session -> response_buffer ;
1350+ memmove (session -> response_buffer , next_marker , session -> response_buffer_pos - skip );
1351+ session -> response_buffer_pos -= skip ;
13611352 logger (LOG_DEBUG , "RTSP: Resynced stream, skipped %zu bytes" , skip );
13621353 }
13631354 else
13641355 {
13651356 /* No marker found, reset buffer */
1366- session -> tcp_buffer_pos = 0 ;
1357+ session -> response_buffer_pos = 0 ;
13671358 logger (LOG_DEBUG , "RTSP: No sync marker found, buffer reset" );
13681359 }
13691360 break ;
@@ -1375,7 +1366,7 @@ int rtsp_handle_tcp_interleaved_data(rtsp_session_t *session, connection_t *conn
13751366 buffer_ref_t * packet_buf = buffer_pool_alloc ();
13761367 if (packet_buf )
13771368 {
1378- memcpy (packet_buf -> data , & session -> tcp_buffer [4 ], packet_length );
1369+ memcpy (packet_buf -> data , & session -> response_buffer [4 ], packet_length );
13791370 packet_buf -> data_size = (size_t )packet_length ;
13801371 int pb = stream_process_rtp_payload (& conn -> stream , packet_buf , & session -> current_seqn , & session -> not_first_packet );
13811372 if (pb > 0 )
@@ -1397,9 +1388,9 @@ int rtsp_handle_tcp_interleaved_data(rtsp_session_t *session, connection_t *conn
13971388
13981389 /* Remove processed packet from buffer */
13991390 int total_packet_size = 4 + packet_length ;
1400- memmove (session -> tcp_buffer , & session -> tcp_buffer [total_packet_size ],
1401- session -> tcp_buffer_pos - total_packet_size );
1402- session -> tcp_buffer_pos -= total_packet_size ;
1391+ memmove (session -> response_buffer , & session -> response_buffer [total_packet_size ],
1392+ session -> response_buffer_pos - total_packet_size );
1393+ session -> response_buffer_pos -= total_packet_size ;
14031394 }
14041395
14051396 return bytes_forwarded ;
@@ -1494,9 +1485,6 @@ static void rtsp_force_cleanup(rtsp_session_t *session)
14941485 /* Close and remove UDP sockets from epoll */
14951486 rtsp_close_udp_sockets (session , "cleanup" );
14961487
1497- /* Reset TCP buffer position */
1498- session -> tcp_buffer_pos = 0 ;
1499-
15001488 /* Reset response buffer position */
15011489 session -> response_buffer_pos = 0 ;
15021490
0 commit comments