@@ -15,11 +15,11 @@ use futures::StreamExt;
1515use log:: { debug, error, info, trace, warn, LevelFilter } ;
1616use semver:: Version ;
1717use sha2:: { Digest , Sha256 } ;
18- use tonic:: transport:: Endpoint ;
18+ use tonic:: { transport:: Endpoint , Streaming } ;
1919use trident_proto:: v1:: {
2020 servicing_response:: Response as ResponseBody , update_service_client:: UpdateServiceClient ,
2121 FinalizeUpdateRequest , HostConfiguration , LogLevel , RebootHandling , RebootManagement ,
22- StageUpdateRequest , StatusCode , UpdateRequest ,
22+ ServicingResponse , StageUpdateRequest , StatusCode , UpdateRequest ,
2323} ;
2424use url:: Url ;
2525use uuid:: Uuid ;
@@ -149,8 +149,13 @@ async fn trigger(url: &Url, hash: Option<String>) -> Result<(), anyhow::Error> {
149149 } ) )
150150 . await ?;
151151
152- // Iterate through the stream until we get a Control message
153- let mut stream = response. into_inner ( ) ;
152+ handle_servicing_stream ( response. into_inner ( ) ) . await
153+ }
154+
155+ async fn handle_servicing_stream (
156+ mut stream : Streaming < ServicingResponse > ,
157+ ) -> Result < ( ) , anyhow:: Error > {
158+ // Iterate through the stream until we get a Completed message
154159 loop {
155160 match stream. next ( ) . await {
156161 Some ( Ok ( response) ) => match response. response {
@@ -174,15 +179,16 @@ async fn trigger(url: &Url, hash: Option<String>) -> Result<(), anyhow::Error> {
174179 "Trident install succeeded: status={:?}" ,
175180 final_status. status( )
176181 ) ;
177- break ;
182+ break Ok ( ( ) ) ;
178183 } else {
179184 error ! ( "Trident install failed: status={:?}" , final_status. status( ) ) ;
180185 match final_status. error {
181186 Some ( err) => {
182- return Err ( anyhow:: anyhow!( err. message) ) ;
187+ error ! ( "Trident reported error: {}" , err. message) ;
188+ break Err ( anyhow:: anyhow!( err. message) ) ;
183189 }
184190 None => {
185- return Err ( anyhow:: anyhow!( "Trident install failed" ) ) ;
191+ break Err ( anyhow:: anyhow!( "Trident install failed" ) ) ;
186192 }
187193 }
188194 }
@@ -193,17 +199,15 @@ async fn trigger(url: &Url, hash: Option<String>) -> Result<(), anyhow::Error> {
193199 }
194200 } ,
195201 Some ( Err ( e) ) => {
196- return Err ( anyhow:: anyhow!( "Error reading from Trident stream: {e}" ) ) ;
202+ break Err ( anyhow:: anyhow!( "Error reading from Trident stream: {e}" ) ) ;
197203 }
198204 None => {
199- return Err ( anyhow:: anyhow!(
205+ break Err ( anyhow:: anyhow!(
200206 "Trident install stream ended without control message"
201207 ) ) ;
202208 }
203209 }
204210 }
205-
206- Ok ( ( ) )
207211}
208212
209213/// Query the Omaha server at the given URL for the given app and track to fetch
0 commit comments