@@ -22,7 +22,7 @@ use goxlr_usb::device::{find_devices, from_device, get_version};
2222use goxlr_usb:: { PID_GOXLR_FULL , PID_GOXLR_MINI } ;
2323use json_patch:: diff;
2424use log:: { debug, error, info, warn} ;
25- use reqwest:: ClientBuilder ;
25+ use reqwest:: { ClientBuilder , StatusCode } ;
2626use std:: collections:: { BTreeMap , HashMap } ;
2727use std:: env;
2828use std:: path:: PathBuf ;
@@ -941,6 +941,10 @@ async fn check_firmware_versions(x: FwSender, source: FirmwareSource) {
941941 let client = if let Ok ( client) = ClientBuilder :: new ( )
942942 . connect_timeout ( Duration :: from_secs ( 2 ) )
943943 . timeout ( Duration :: from_secs ( 5 ) )
944+ . tcp_keepalive ( Duration :: from_secs ( 30 ) )
945+ . tcp_nodelay ( true )
946+ . pool_idle_timeout ( Duration :: from_secs ( 30 ) )
947+ . pool_max_idle_per_host ( 1 )
944948 . build ( )
945949 {
946950 client
@@ -953,6 +957,15 @@ async fn check_firmware_versions(x: FwSender, source: FirmwareSource) {
953957 debug ! ( "Performing Firmware Version Check.." ) ;
954958 let url = format ! ( "{}{}" , FIRMWARE_PATHS [ source] , "UpdateManifest_v3.xml" ) ;
955959 if let Ok ( response) = client. get ( url) . send ( ) . await {
960+ if response. status ( ) != StatusCode :: OK {
961+ warn ! (
962+ "Firmware Version Check Failed, Invalid Response Code: {}" ,
963+ response. status( )
964+ ) ;
965+ let _ = x. send ( map) . await ;
966+ return ;
967+ }
968+
956969 if let Ok ( text) = response. text ( ) . await {
957970 // Parse this into an XML tree...
958971 if let Ok ( root) = Element :: parse ( text. as_bytes ( ) ) {
@@ -966,6 +979,8 @@ async fn check_firmware_versions(x: FwSender, source: FirmwareSource) {
966979 version : VersionNumber :: from ( root. attributes [ mini_key] . clone ( ) ) ,
967980 change_log,
968981 } ) ;
982+ } else {
983+ warn ! ( "{mini_key} node not found in result" ) ;
969984 }
970985
971986 // We can probably abstract this slightly, the mini and full behaviours are the same.
@@ -979,6 +994,8 @@ async fn check_firmware_versions(x: FwSender, source: FirmwareSource) {
979994 version : VersionNumber :: from ( root. attributes [ full_key] . clone ( ) ) ,
980995 change_log,
981996 } ) ;
997+ } else {
998+ warn ! ( "{full_key} node not found in result" ) ;
982999 }
9831000 } else {
9841001 warn ! ( "Unable to Parse the XML Response from the TC-Helicon Update Server" ) ;
@@ -990,5 +1007,6 @@ async fn check_firmware_versions(x: FwSender, source: FirmwareSource) {
9901007 warn ! ( "Unable to connect to the TC-Helicon Update Server" ) ;
9911008 }
9921009
1010+ debug ! ( "Firmware Update Process Finished" ) ;
9931011 let _ = x. send ( map) . await ;
9941012}
0 commit comments