65 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			65 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								# Turn on ssl between the client and server
							 | 
						||
| 
								 | 
							
								# and run a number of tests
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								-- source include/have_ssl.inc
							 | 
						||
| 
								 | 
							
								-- source include/big_test.inc
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Save the initial number of concurrent sessions
							 | 
						||
| 
								 | 
							
								--source include/count_sessions.inc
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--disable_warnings
							 | 
						||
| 
								 | 
							
								DROP TABLE IF EXISTS t1, t2;
							 | 
						||
| 
								 | 
							
								--enable_warnings
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Bug#29579 Clients using SSL can hang the server
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								connect (ssl_con,localhost,root,,,,,SSL);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								create table t1 (a int);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								disconnect ssl_con;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--disable_query_log
							 | 
						||
| 
								 | 
							
								--disable_result_log
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								let $count= 2000;
							 | 
						||
| 
								 | 
							
								while ($count)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  connect (ssl_con,localhost,root,,,,,SSL);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  eval insert into t1 values ($count);
							 | 
						||
| 
								 | 
							
								  dec $count;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  # This select causes the net buffer to fill as the server sends the results
							 | 
						||
| 
								 | 
							
								  # but the client doesn't reap the results. The results are larger each time
							 | 
						||
| 
								 | 
							
								  # through the loop, so that eventually the buffer is completely full
							 | 
						||
| 
								 | 
							
								  # at the exact moment the server attempts to the close the connection with
							 | 
						||
| 
								 | 
							
								  # the lock held.
							 | 
						||
| 
								 | 
							
								  send select * from t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  # now send the quit the command so the server will initiate the shutdown.
							 | 
						||
| 
								 | 
							
								  send_quit ssl_con;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  # if the server is hung, this will hang too:
							 | 
						||
| 
								 | 
							
								  connect (ssl_con2,localhost,root,,,,,SSL);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  # no hang if we get here, close and retry
							 | 
						||
| 
								 | 
							
								  disconnect ssl_con2;
							 | 
						||
| 
								 | 
							
								  disconnect ssl_con;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								--enable_query_log
							 | 
						||
| 
								 | 
							
								--enable_result_log
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								connect (ssl_con,localhost,root,,,,,SSL);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								connection default;
							 | 
						||
| 
								 | 
							
								disconnect ssl_con;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Wait till all disconnects are completed
							 | 
						||
| 
								 | 
							
								--source include/wait_until_count_sessions.inc
							 | 
						||
| 
								 | 
							
								
							 |