]> git.proxmox.com Git - proxmox-backup.git/commitdiff
backup: avoid Transport endpoint is not connected error
authorDietmar Maurer <dietmar@proxmox.com>
Tue, 20 Oct 2020 12:18:14 +0000 (14:18 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Tue, 20 Oct 2020 12:20:04 +0000 (14:20 +0200)
We simply supress the error message if the finish flag is set.

src/api2/backup.rs
src/api2/backup/environment.rs

index ca7af3c8b7bda0f98dd4cd4e626d8372b338c03d..b56ddbdd6c9d6a5150a83b9f441cb9173100efb9 100644 (file)
@@ -182,8 +182,22 @@ async move {
                 http.http2_initial_connection_window_size(window_size);
                 http.http2_max_frame_size(4*1024*1024);
 
+                let env3 = env2.clone();
                 http.serve_connection(conn, service)
-                    .map_err(Error::from)
+                    .map(move |result| {
+                        match result {
+                            Err(err) => {
+                                // Avoid  Transport endpoint is not connected (os error 107)
+                                // fixme: find a better way to test for that error
+                                if err.to_string().starts_with("connection error") && env3.finished() {
+                                    Ok(())
+                                } else {
+                                    Err(Error::from(err))
+                                }
+                            }
+                            Ok(()) => Ok(()),
+                        }
+                    })
             });
         let mut abort_future = abort_future
             .map(|_| Err(format_err!("task aborted")));
index 27497b2444d127b28952a9b045b67364f5aecb91..dea3ca574b58c818ec5a26dda981ecb6ac9e6b97 100644 (file)
@@ -567,6 +567,12 @@ impl BackupEnvironment {
         Ok(())
     }
 
+    /// Return true if the finished flag is set
+    pub fn finished(&self) -> bool {
+        let state = self.state.lock().unwrap();
+        state.finished
+    }
+
     /// Remove complete backup
     pub fn remove_backup(&self) -> Result<(), Error> {
         let mut state = self.state.lock().unwrap();