@@ -653,6 +653,7 @@ else {
653653
654654 % if resumable_media_param:
655655 let mut should_ask_dlg_for_url = false;
656+ let mut upload_url_from_server = true;
656657 let mut upload_url: Option<String > = None;
657658 % endif
658659
@@ -675,6 +676,7 @@ else {
675676 % if resumable_media_param:
676677 if should_ask_dlg_for_url && (upload_url = dlg.upload_url()) == () && upload_url.is_some() {
677678 should_ask_dlg_for_url = false;
679+ upload_url_from_server = false;
678680 let mut response = hyper::client::Response::new(Box::new(cmn::DummyNetworkStream));
679681 match response {
680682 Ok(ref mut res) => {
@@ -730,6 +732,7 @@ else {
730732 }
731733 % endif # # media upload handling
732734 % if resumable_media_param:
735+ upload_url_from_server = true;
733736 if protocol == "${ resumable_media_param.protocol} " {
734737 req = req.header(cmn::XUploadContentType(reader_mime_type.clone()));
735738 }
@@ -768,15 +771,23 @@ else {
768771 if protocol == "${ resumable_media_param.protocol} " {
769772 ${ READER_SEEK | indent_all_but_first_by(6 )}
770773 let mut client = &mut *self.hub.client.borrow_mut();
771- match (cmn::ResumableUploadHelper {
772- client: &mut client.borrow_mut(),
773- delegate: dlg,
774- auth: &mut *self.hub.auth.borrow_mut(),
775- url: &res.headers.get::<Location >().expect("Location header is part of protocol").0,
776- reader: &mut reader,
777- media_type: reader_mime_type.clone(),
778- content_size: size
779- }.upload()) {
774+ let upload_result = {
775+ let url = &res.headers.get::<Location >().expect("Location header is part of protocol").0;
776+ if upload_url_from_server {
777+ dlg.store_upload_url(url);
778+ }
779+
780+ cmn::ResumableUploadHelper {
781+ client: &mut client.borrow_mut(),
782+ delegate: dlg,
783+ auth: &mut *self.hub.auth.borrow_mut(),
784+ url: url,
785+ reader: &mut reader,
786+ media_type: reader_mime_type.clone(),
787+ content_size: size
788+ }.upload()
789+ };
790+ match upload_result {
780791 Err(err) => {
781792 ## Do not ask the delgate again, as it was asked by the helper !
782793 ${ delegate_finish} (false);
0 commit comments