Make sure that HTTPClient disconnects from the old server if redirecting to new one
Fixes: https://github.com/espressif/arduino-esp32/issues/4763
This commit is contained in:
		
							parent
							
								
									ad4cf1461b
								
							
						
					
					
						commit
						6f23cd5988
					
				| @ -269,13 +269,20 @@ bool HTTPClient::beginInternal(String url, const char* expectedProtocol) | |||||||
| 
 | 
 | ||||||
|     // get port
 |     // get port
 | ||||||
|     index = host.indexOf(':'); |     index = host.indexOf(':'); | ||||||
|  |     String the_host; | ||||||
|     if(index >= 0) { |     if(index >= 0) { | ||||||
|         _host = host.substring(0, index); // hostname
 |         the_host = host.substring(0, index); // hostname
 | ||||||
|         host.remove(0, (index + 1)); // remove hostname + :
 |         host.remove(0, (index + 1)); // remove hostname + :
 | ||||||
|         _port = host.toInt(); // get port
 |         _port = host.toInt(); // get port
 | ||||||
|     } else { |     } else { | ||||||
|         _host = host; |         the_host = host; | ||||||
|     } |     } | ||||||
|  |     if(_host != the_host && connected()){ | ||||||
|  |         log_d("switching host from '%s' to '%s'. disconnecting first", _host.c_str(), the_host.c_str()); | ||||||
|  |         _canReuse = false; | ||||||
|  |         disconnect(true); | ||||||
|  |     } | ||||||
|  |     _host = the_host; | ||||||
|     _uri = url; |     _uri = url; | ||||||
|     log_d("host: %s port: %d url: %s", _host.c_str(), _port, _uri.c_str()); |     log_d("host: %s port: %d url: %s", _host.c_str(), _port, _uri.c_str()); | ||||||
|     return true; |     return true; | ||||||
| @ -1318,9 +1325,9 @@ int HTTPClient::writeToStreamDataBlock(Stream * stream, int size) | |||||||
|                     readBytes = buff_size; |                     readBytes = buff_size; | ||||||
|                 } |                 } | ||||||
| 		     | 		     | ||||||
| 		// stop if no more reading    
 |         		// stop if no more reading    
 | ||||||
| 		if (readBytes == 0) |         		if (readBytes == 0) | ||||||
| 			break; |         			break; | ||||||
| 
 | 
 | ||||||
|                 // read data
 |                 // read data
 | ||||||
|                 int bytesRead = _client->readBytes(buff, readBytes); |                 int bytesRead = _client->readBytes(buff, readBytes); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user