[Box Backup-dev] [PATCH] Win32 merge [06] Command socket fixes

Chris Wilson boxbackup-dev at fluffy.co.uk
Sun Jul 23 02:19:58 BST 2006


  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

--8323328-227556070-1153617598=:9244
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

Hi all,

The attached patch fixes two issues:

* Moves all command socket communications to the worker thread, to
   eliminate the possibility that both threads call C library functions on
   the command socket at the same time (e.g. ReadFile and WriteFile), which
   deadlocks the process;
* Hopefully fixed some problems with trying to delete the archive file
   multiple times.

Cheers, Chris.
-- 
_ ___ __     _
  / __/ / ,__(_)_  | Chris Wilson <0000 at qwirx.com> - Cambs UK |
/ (_/ ,\/ _/ /_ \ | Security/C/C++/Java/Perl/SQL/HTML Developer |
\ _/_/_/_//_/___/ | We are GNU-free your mind-and your software |
--8323328-227556070-1153617598=:9244
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=bb-win32-merge-5-backupdaemon-command-socket-thread.patch
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.64.0607230219580.9244 at localhost>
Content-Description: 
Content-Disposition: attachment; filename=bb-win32-merge-5-backupdaemon-command-socket-thread.patch

SW5kZXg6IGJpbi9iYmFja3VwZC9CYWNrdXBEYWVtb24uaA0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIGJpbi9iYmFja3VwZC9CYWNrdXBEYWVtb24u
aAkocmV2aXNpb24gNTY4KQ0KKysrIGJpbi9iYmFja3VwZC9CYWNrdXBEYWVt
b24uaAkod29ya2luZyBjb3B5KQ0KQEAgLTE4Miw3ICsxODUsMTAgQEANCiAJ
dm9pZCBSdW5IZWxwZXJUaHJlYWQodm9pZCk7DQogDQogCXByaXZhdGU6DQot
CWJvb2wgbURvU3luY0ZsYWdPdXQsIG1TeW5jSXNGb3JjZWRPdXQsIG1SZWNl
aXZlZENvbW1hbmRDb25uOw0KKwlib29sIG1Eb1N5bmNGbGFnT3V0LCBtU3lu
Y0lzRm9yY2VkT3V0Ow0KKwlIQU5ETEUgbWhNZXNzYWdlVG9TZW5kRXZlbnQs
IG1oQ29tbWFuZFJlY2VpdmVkRXZlbnQ7DQorCUNSSVRJQ0FMX1NFQ1RJT04g
bU1lc3NhZ2VRdWV1ZUxvY2s7DQorCXN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5n
PiBtTWVzc2FnZUxpc3Q7DQogI2VuZGlmDQogfTsNCiANCkluZGV4OiBiaW4v
YmJhY2t1cGQvQmFja3VwRGFlbW9uLmNwcA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIGJpbi9iYmFja3VwZC9CYWNrdXBEYWVtb24uY3BwCShyZXZp
c2lvbiA1NjgpDQorKysgYmluL2JiYWNrdXBkL0JhY2t1cERhZW1vbi5jcHAJ
KHdvcmtpbmcgY29weSkNCkBAIC0xMjUsNiArMTI1LDI5IEBADQogCX0NCiAN
CiAjaWZkZWYgV0lOMzINCisJLy8gQ3JlYXRlIHRoZSBldmVudCBvYmplY3Qg
dG8gc2lnbmFsIGZyb20gbWFpbiB0aHJlYWQgdG8gd29ya2VyDQorCS8vIHdo
ZW4gbmV3IG1lc3NhZ2VzIGFyZSBxdWV1ZWQgdG8gYmUgc2VudCB0byB0aGUg
Y29tbWFuZCBzb2NrZXQuDQorCW1oTWVzc2FnZVRvU2VuZEV2ZW50ID0gQ3Jl
YXRlRXZlbnQoTlVMTCwgVFJVRSwgRkFMU0UsIE5VTEwpOw0KKwlpZiAobWhN
ZXNzYWdlVG9TZW5kRXZlbnQgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpDQor
CXsNCisJCXN5c2xvZyhMT0dfRVJSLCAiRmFpbGVkIHRvIGNyZWF0ZSBldmVu
dCBvYmplY3Q6IGVycm9yICVkIiwNCisJCQlHZXRMYXN0RXJyb3IpOw0KKwkJ
ZXhpdCgxKTsNCisJfQ0KKw0KKwkvLyBDcmVhdGUgdGhlIGV2ZW50IG9iamVj
dCB0byBzaWduYWwgZnJvbSB3b3JrZXIgdG8gbWFpbiB0aHJlYWQNCisJLy8g
d2hlbiBhIGNvbW1hbmQgaGFzIGJlZW4gcmVjZWl2ZWQgb24gdGhlIGNvbW1h
bmQgc29ja2V0Lg0KKwltaENvbW1hbmRSZWNlaXZlZEV2ZW50ID0gQ3JlYXRl
RXZlbnQoTlVMTCwgVFJVRSwgRkFMU0UsIE5VTEwpOw0KKwlpZiAobWhDb21t
YW5kUmVjZWl2ZWRFdmVudCA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkNCisJ
ew0KKwkJc3lzbG9nKExPR19FUlIsICJGYWlsZWQgdG8gY3JlYXRlIGV2ZW50
IG9iamVjdDogZXJyb3IgJWQiLA0KKwkJCUdldExhc3RFcnJvcik7DQorCQll
eGl0KDEpOw0KKwl9DQorDQorCS8vIENyZWF0ZSB0aGUgY3JpdGljYWwgc2Vj
dGlvbiB0byBwcm90ZWN0IHRoZSBtZXNzYWdlIHF1ZXVlDQorCUluaXRpYWxp
emVDcml0aWNhbFNlY3Rpb24oJm1NZXNzYWdlUXVldWVMb2NrKTsNCisNCiAJ
Ly8gQ3JlYXRlIGEgdGhyZWFkIHRvIGhhbmRsZSB0aGUgbmFtZWQgcGlwZQ0K
IAlIQU5ETEUgaFRocmVhZDsNCiAJdW5zaWduZWQgaW50IGR3VGhyZWFkSWQ7
DQpAQCAtMjYzLDE2ICsyODYsMzUgQEANCiB2b2lkIEJhY2t1cERhZW1vbjo6
UnVuSGVscGVyVGhyZWFkKHZvaWQpDQogew0KIAltcENvbW1hbmRTb2NrZXRJ
bmZvID0gbmV3IENvbW1hbmRTb2NrZXRJbmZvOw0KLQl0aGlzLT5tUmVjZWl2
ZWRDb21tYW5kQ29ubiA9IGZhbHNlOw0KKwlXaW5OYW1lZFBpcGVTdHJlYW0m
IHJTb2NrZXQobXBDb21tYW5kU29ja2V0SW5mby0+bUxpc3RlbmluZ1NvY2tl
dCk7DQogDQogCS8vIGxvb3AgdW50aWwgdGhlIHBhcmVudCBwcm9jZXNzIGV4
aXRzDQotCXdoaWxlIChUUlVFKQ0KKwl3aGlsZSAoIUlzVGVybWluYXRlV2Fu
dGVkKCkpDQogCXsNCiAJCXRyeQ0KIAkJew0KLQkJCW1wQ29tbWFuZFNvY2tl
dEluZm8tPm1MaXN0ZW5pbmdTb2NrZXQuQWNjZXB0KA0KLQkJCQlCT1hfTkFN
RURfUElQRV9OQU1FKTsNCisJCQlyU29ja2V0LkFjY2VwdChCT1hfTkFNRURf
UElQRV9OQU1FKTsNCisJCX0NCisJCWNhdGNoIChCb3hFeGNlcHRpb24gJmUp
DQorCQl7DQorCQkJOjpzeXNsb2coTE9HX0VSUiwgIkZhaWxlZCB0byBvcGVu
IGNvbW1hbmQgc29ja2V0OiAlcyIsDQorCQkJCWUud2hhdCgpKTsNCisJCQlT
ZXRUZXJtaW5hdGVXYW50ZWQoKTsNCisJCQlicmVhazsgLy8gdGhpcyBpcyBm
YXRhbA0KKwkJfQ0KKwkJY2F0Y2ggKC4uLikNCisJCXsNCisJCQk6OnN5c2xv
ZyhMT0dfRVJSLCAiRmFpbGVkIHRvIG9wZW4gY29tbWFuZCBzb2NrZXQ6ICIN
CisJCQkJInVua25vd24gZXJyb3IiKTsNCisJCQlTZXRUZXJtaW5hdGVXYW50
ZWQoKTsNCisJCQlicmVhazsgLy8gdGhpcyBpcyBmYXRhbA0KKwkJfQ0KIA0K
KwkJdHJ5DQorCQl7DQorCQkJLy8gRXJyb3JzIGhlcmUgZG8gbm90IGtpbGwg
dGhlIHRocmVhZCwNCisJCQkvLyBvbmx5IHRoZSBjdXJyZW50IGNvbm5lY3Rp
b24uDQorDQogCQkJLy8gVGhpcyBuZXh0IHNlY3Rpb24gY29tZXMgZnJvbSBC
ZW4ncyBvcmlnaW5hbCBmdW5jdGlvbg0KIAkJCS8vIExvZw0KIAkJCTo6c3lz
bG9nKExPR19JTkZPLCAiQ29ubmVjdGlvbiBmcm9tIGNvbW1hbmQgc29ja2V0
Iik7DQpAQCAtMjg5LDE4ICszMzEsNzMgQEANCiAJCQkJY29uZi5HZXRLZXlW
YWx1ZUludCgiTWF4VXBsb2FkV2FpdCIpLA0KIAkJCQltU3RhdGUpOw0KIA0K
LQkJCW1wQ29tbWFuZFNvY2tldEluZm8tPm1MaXN0ZW5pbmdTb2NrZXQuV3Jp
dGUoc3VtbWFyeSwgc3VtbWFyeVNpemUpOw0KLQkJCW1wQ29tbWFuZFNvY2tl
dEluZm8tPm1MaXN0ZW5pbmdTb2NrZXQuV3JpdGUoInBpbmdcbiIsIDUpOw0K
KwkJCXJTb2NrZXQuV3JpdGUoc3VtbWFyeSwgc3VtbWFyeVNpemUpOw0KKwkJ
CXJTb2NrZXQuV3JpdGUoInBpbmdcbiIsIDUpOw0KIA0KLQkJCUlPU3RyZWFt
R2V0TGluZSByZWFkTGluZShtcENvbW1hbmRTb2NrZXRJbmZvLT5tTGlzdGVu
aW5nU29ja2V0KTsNCisJCQkvLyBvbGQgcXVldWVkIG1lc3NhZ2VzIGFyZSBu
b3QgdXNlZnVsDQorCQkJRW50ZXJDcml0aWNhbFNlY3Rpb24oJm1NZXNzYWdl
UXVldWVMb2NrKTsNCisJCQltTWVzc2FnZUxpc3QuY2xlYXIoKTsNCisJCQlS
ZXNldEV2ZW50KG1oTWVzc2FnZVRvU2VuZEV2ZW50KTsNCisJCQlMZWF2ZUNy
aXRpY2FsU2VjdGlvbigmbU1lc3NhZ2VRdWV1ZUxvY2spOw0KKw0KKwkJCUlP
U3RyZWFtR2V0TGluZSByZWFkTGluZShyU29ja2V0KTsNCiAJCQlzdGQ6OnN0
cmluZyBjb21tYW5kOw0KIA0KLQkJCXdoaWxlIChtcENvbW1hbmRTb2NrZXRJ
bmZvLT5tTGlzdGVuaW5nU29ja2V0LklzQ29ubmVjdGVkKCkgJiYNCi0JCQkg
ICAgICAgcmVhZExpbmUuR2V0TGluZShjb21tYW5kKSApDQorCQkJd2hpbGUg
KHJTb2NrZXQuSXNDb25uZWN0ZWQoKSAmJiAhSXNUZXJtaW5hdGVXYW50ZWQo
KSkNCiAJCQl7DQotCQkJCVRSQUNFMSgiUmVjZWl2aW5nIGNvbW1hbmQgJyVz
JyBvdmVyICINCi0JCQkJCSJjb21tYW5kIHNvY2tldFxuIiwgY29tbWFuZC5j
X3N0cigpKTsNCisJCQkJSEFORExFIGhhbmRsZXNbMl07DQorCQkJCWhhbmRs
ZXNbMF0gPSBtaE1lc3NhZ2VUb1NlbmRFdmVudDsNCisJCQkJaGFuZGxlc1sx
XSA9IHJTb2NrZXQuR2V0UmVhZGFibGVFdmVudCgpOw0KIA0KKwkJCQlEV09S
RCByZXN1bHQgPSBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzKA0KKwkJCQkJc2l6
ZW9mKGhhbmRsZXMpL3NpemVvZigqaGFuZGxlcyksDQorCQkJCQloYW5kbGVz
LCBGQUxTRSwgMTAwMCk7DQorDQorCQkJCWlmIChyZXN1bHQgPT0gMCkNCisJ
CQkJew0KKwkJCQkJUmVzZXRFdmVudChtaE1lc3NhZ2VUb1NlbmRFdmVudCk7
DQorDQorCQkJCQlFbnRlckNyaXRpY2FsU2VjdGlvbigmbU1lc3NhZ2VRdWV1
ZUxvY2spOw0KKwkJCQkJdHJ5DQorCQkJCQl7DQorCQkJCQkJd2hpbGUgKG1N
ZXNzYWdlTGlzdC5zaXplKCkgPiAwKQ0KKwkJCQkJCXsNCisJCQkJCQkJc3Rk
OjpzdHJpbmcgbWVzc2FnZSA9ICoobU1lc3NhZ2VMaXN0LmJlZ2luKCkpOw0K
KwkJCQkJCQltTWVzc2FnZUxpc3QuZXJhc2UobU1lc3NhZ2VMaXN0LmJlZ2lu
KCkpOw0KKwkJCQkJCQlwcmludGYoIlNlbmRpbmcgJyVzJyB0byB3YWl0aW5n
IGNsaWVudC4uLiAiLCBtZXNzYWdlLmNfc3RyKCkpOw0KKwkJCQkJCQltZXNz
YWdlICs9ICJcbiI7DQorCQkJCQkJCXJTb2NrZXQuV3JpdGUobWVzc2FnZS5j
X3N0cigpLA0KKwkJCQkJCQkJbWVzc2FnZS5sZW5ndGgoKSk7DQorDQorCQkJ
CQkJCXByaW50ZigiZG9uZS5cbiIpOw0KKwkJCQkJCX0NCisJCQkJCX0NCisJ
CQkJCWNhdGNoICguLi4pDQorCQkJCQl7DQorCQkJCQkJTGVhdmVDcml0aWNh
bFNlY3Rpb24oJm1NZXNzYWdlUXVldWVMb2NrKTsNCisJCQkJCQl0aHJvdzsN
CisJCQkJCX0NCisJCQkJCUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZtTWVzc2Fn
ZVF1ZXVlTG9jayk7DQorCQkJCQljb250aW51ZTsNCisJCQkJfQ0KKwkJCQll
bHNlIGlmIChyZXN1bHQgPT0gV0FJVF9USU1FT1VUKQ0KKwkJCQl7DQorCQkJ
CQljb250aW51ZTsNCisJCQkJfQ0KKwkJCQllbHNlIGlmIChyZXN1bHQgIT0g
MSkNCisJCQkJew0KKwkJCQkJOjpzeXNsb2coTE9HX0VSUiwgIldhaXRGb3JN
dWx0aXBsZU9iamVjdHMgcmV0dXJuZWQgaW52YWxpZCByZXN1bHQgJWQiLCBy
ZXN1bHQpOw0KKwkJCQkJY29udGludWU7DQorCQkJCX0NCisNCisJCQkJaWYg
KCFyZWFkTGluZS5HZXRMaW5lKGNvbW1hbmQpKQ0KKwkJCQl7DQorCQkJCQk6
OnN5c2xvZyhMT0dfRVJSLCAiRmFpbGVkIHRvIHJlYWQgbGluZSIpOw0KKwkJ
CQkJY29udGludWU7DQorCQkJCX0NCisNCisJCQkJcHJpbnRmKCJSZWNlaXZl
ZCBjb21tYW5kICclcycgZnJvbSBjbGllbnRcbiIsIGNvbW1hbmQuY19zdHIo
KSk7DQorDQogCQkJCWJvb2wgc2VuZE9LID0gZmFsc2U7DQogCQkJCWJvb2wg
c2VuZFJlc3BvbnNlID0gdHJ1ZTsNCiAJCQkJYm9vbCBkaXNjb25uZWN0ID0g
ZmFsc2U7DQpAQCAtMzM4LDEyICs0MzUsMTggQEANCiAJCQkJCVNldFRlcm1p
bmF0ZVdhbnRlZCgpOw0KIAkJCQkJc2VuZE9LID0gdHJ1ZTsNCiAJCQkJfQ0K
KwkJCQllbHNlDQorCQkJCXsNCisJCQkJCTo6c3lzbG9nKExPR19FUlIsICJS
ZWNlaXZlZCB1bmtub3duIGNvbW1hbmQgJyVzJyBmcm9tIGNsaWVudCIsIGNv
bW1hbmQuY19zdHIoKSk7DQorCQkJCQlzZW5kUmVzcG9uc2UgPSB0cnVlOw0K
KwkJCQkJc2VuZE9LID0gZmFsc2U7DQorCQkJCX0NCiANCiAJCQkJLy8gU2Vu
ZCBhIHJlc3BvbnNlIGJhY2s/DQogCQkJCWlmIChzZW5kUmVzcG9uc2UpDQog
CQkJCXsNCiAJCQkJCWNvbnN0IGNoYXIqIHJlc3BvbnNlID0gc2VuZE9LID8g
Im9rXG4iIDogImVycm9yXG4iOw0KLQkJCQkJbXBDb21tYW5kU29ja2V0SW5m
by0+bUxpc3RlbmluZ1NvY2tldC5Xcml0ZSgNCisJCQkJCXJTb2NrZXQuV3Jp
dGUoDQogCQkJCQkJcmVzcG9uc2UsIHN0cmxlbihyZXNwb25zZSkpOw0KIAkJ
CQl9DQogDQpAQCAtMzUyLDEwICs0NTUsMTAgQEANCiAJCQkJCWJyZWFrOw0K
IAkJCQl9DQogDQotCQkJCXRoaXMtPm1SZWNlaXZlZENvbW1hbmRDb25uID0g
dHJ1ZTsNCisJCQkJLy8gdGhpcy0+bVJlY2VpdmVkQ29tbWFuZENvbm4gPSB0
cnVlOw0KIAkJCX0NCiANCi0JCQltcENvbW1hbmRTb2NrZXRJbmZvLT5tTGlz
dGVuaW5nU29ja2V0LkNsb3NlKCk7DQorCQkJclNvY2tldC5DbG9zZSgpOw0K
IAkJfQ0KIAkJY2F0Y2ggKEJveEV4Y2VwdGlvbiAmZSkNCiAJCXsNCkBAIC01
MDQsOCArNjA3LDggQEANCiAJCUJhY2t1cENsaWVudENvbnRleHQ6OkNsaWVu
dFN0b3JlTWFya2VyX05vdEtub3duOw0KIAkvLyBoYXZlbid0IGNvbnRhY3Rl
ZCB0aGUgc3RvcmUgeWV0DQogDQotIAlib29sIGRlc2VyaWFsaXNlZCA9IERl
c2VyaWFsaXplU3RvcmVPYmplY3RJbmZvKGNsaWVudFN0b3JlTWFya2VyLCAN
Ci0JCWxhc3RTeW5jVGltZSwgbmV4dFN5bmNUaW1lKTsNCisgCWJvb2wgZGVs
ZXRlU3RvcmVPYmplY3RJbmZvRmlsZSA9IERlc2VyaWFsaXplU3RvcmVPYmpl
Y3RJbmZvKA0KKwkJY2xpZW50U3RvcmVNYXJrZXIsIGxhc3RTeW5jVGltZSwg
bmV4dFN5bmNUaW1lKTsNCiAgDQogCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogCQ0KQEAgLTYxMSwxNiAr
NzE0LDIyIEBADQogCQkJLy8gRGVsZXRlIHRoZSBzZXJpYWxpc2VkIHN0b3Jl
IG9iamVjdCBmaWxlLA0KIAkJCS8vIHNvIHRoYXQgd2UgZG9uJ3QgdHJ5IHRv
IHJlbG9hZCBpdCBhZnRlciBhDQogCQkJLy8gcGFydGlhbGx5IGNvbXBsZXRl
ZCBiYWNrdXANCi0JCQlpZihkZXNlcmlhbGlzZWQgJiYgIURlbGV0ZVN0b3Jl
T2JqZWN0SW5mbygpKQ0KKwkJCWlmKGRlbGV0ZVN0b3JlT2JqZWN0SW5mb0Zp
bGUgJiYgDQorCQkJCSFEZWxldGVTdG9yZU9iamVjdEluZm8oKSkNCiAJCQl7
DQogCQkJCTo6c3lzbG9nKExPR19FUlIsICJGYWlsZWQgdG8gZGVsZXRlIHRo
ZSAiDQogCQkJCQkiU3RvcmVPYmplY3RJbmZvRmlsZSwgYmFja3VwIGNhbm5v
dCAiDQogCQkJCQkiY29udGludWUgc2FmZWx5LiIpOw0KIAkJCQkvLyBwcmV2
ZW50IHJ1bmF3YXkgcHJvY2VzcyB3aGVyZSB0aGUgbG9ncyBmaWxsIHVwIC0t
IHdpdGhvdXQgdGhpcw0KIAkJCQkvLyB0aGUgbG9nIG1lc3NhZ2Ugd2lsbCBi
ZSBlbWl0dGVkIGluIGEgdGlnaHQgbG9vcC4NCiAJCQkJOjpzbGVlcCg2MCk7
IA0KIAkJCQljb250aW51ZTsNCiAJCQl9DQorDQorCQkJLy8gSW4gY2FzZSB0
aGUgYmFja3VwIHRocm93cyBhbiBleGNlcHRpb24sDQorCQkJLy8gd2Ugc2hv
dWxkIG5vdCB0cnkgdG8gZGVsZXRlIHRoZSBzdG9yZSBpbmZvDQorCQkJLy8g
b2JqZWN0IGZpbGUgYWdhaW4uDQorCQkJZGVsZXRlU3RvcmVPYmplY3RJbmZv
RmlsZSA9IGZhbHNlOw0KIAkJCQ0KIAkJCS8vIERvIHN5bmMNCiAJCQlib29s
IGVycm9yT2NjdXJyZWQgPSBmYWxzZTsNCkBAIC03MjksOSArODM1LDE1IEBA
DQogDQogCQkJCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tDQogDQotCQkJCS8vIFdlIGhhZCBhIHN1Y2Nlc3Nm
dWwgYmFja3VwLCBzYXZlIHRoZSBzdG9yZSBpbmZvDQotCQkJCVNlcmlhbGl6
ZVN0b3JlT2JqZWN0SW5mbyhjbGllbnRTdG9yZU1hcmtlciwgbGFzdFN5bmNU
aW1lLCBuZXh0U3luY1RpbWUpOw0KKwkJCQkvLyBXZSBoYWQgYSBzdWNjZXNz
ZnVsIGJhY2t1cCwgc2F2ZSB0aGUgc3RvcmUgDQorCQkJCS8vIGluZm8uIElm
IHdlIHNhdmUgc3VjY2Vzc2Z1bGx5LCB3ZSBtdXN0IA0KKwkJCQkvLyBkZWxl
dGUgdGhlIGZpbGUgbmV4dCB0aW1lIHdlIHN0YXJ0IGEgYmFja3VwDQogDQor
CQkJCWRlbGV0ZVN0b3JlT2JqZWN0SW5mb0ZpbGUgPSANCisJCQkJCVNlcmlh
bGl6ZVN0b3JlT2JqZWN0SW5mbygNCisJCQkJCQljbGllbnRTdG9yZU1hcmtl
ciwgDQorCQkJCQkJbGFzdFN5bmNUaW1lLCBuZXh0U3luY1RpbWUpOw0KKw0K
IAkJCQkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQ0KIAkJCX0NCiAJCQljYXRjaChCb3hFeGNlcHRpb24gJmUp
DQpAQCAtOTAyLDI1ICsxMDE0LDI3IEBADQogdm9pZCBCYWNrdXBEYWVtb246
OldhaXRPbkNvbW1hbmRTb2NrZXQoYm94X3RpbWVfdCBSZXF1aXJlZERlbGF5
LCBib29sICZEb1N5bmNGbGFnT3V0LCBib29sICZTeW5jSXNGb3JjZWRPdXQp
DQogew0KICNpZmRlZiBXSU4zMg0KLQkvLyBSZWFsbHkgY291bGQgdXNlIHNv
bWUgaW50ZXJwcm9jZXNzIHByb3RlY3Rpb24sIG11dGV4IGV0Yw0KLQkvLyBh
bnkgc2lkZSBlZmZlY3Qgc2hvdWxkIGJlIHRvbyBiYWQ/Pz8/IDopDQotCURX
T1JEIHRpbWVvdXQgPSAoRFdPUkQpQm94VGltZVRvTWlsbGlTZWNvbmRzKFJl
cXVpcmVkRGVsYXkpOw0KKwlEV09SRCByZXF1aXJlZERlbGF5TXMgPSBCb3hU
aW1lVG9NaWxsaVNlY29uZHMoUmVxdWlyZWREZWxheSk7DQogDQotCXdoaWxl
ICggdGhpcy0+bVJlY2VpdmVkQ29tbWFuZENvbm4gPT0gZmFsc2UgKQ0KKwlE
V09SRCByZXN1bHQgPSBXYWl0Rm9yU2luZ2xlT2JqZWN0KG1oQ29tbWFuZFJl
Y2VpdmVkRXZlbnQsIA0KKwkJKERXT1JEKXJlcXVpcmVkRGVsYXlNcyk7DQor
DQorCWlmIChyZXN1bHQgPT0gV0FJVF9PQkpFQ1RfMCkNCiAJew0KLQkJU2xl
ZXAoMSk7DQotDQotCQlpZiAoIHRpbWVvdXQgPT0gMCApDQotCQl7DQotCQkJ
RG9TeW5jRmxhZ091dCA9IGZhbHNlOw0KLQkJCVN5bmNJc0ZvcmNlZE91dCA9
IGZhbHNlOw0KLQkJCXJldHVybjsNCi0JCX0NCi0JCXRpbWVvdXQtLTsNCisJ
CURvU3luY0ZsYWdPdXQgPSB0aGlzLT5tRG9TeW5jRmxhZ091dDsNCisJCVN5
bmNJc0ZvcmNlZE91dCA9IHRoaXMtPm1TeW5jSXNGb3JjZWRPdXQ7DQorCQlS
ZXNldEV2ZW50KG1oQ29tbWFuZFJlY2VpdmVkRXZlbnQpOw0KIAl9DQotCXRo
aXMtPm1SZWNlaXZlZENvbW1hbmRDb25uID0gZmFsc2U7DQotCURvU3luY0Zs
YWdPdXQgPSB0aGlzLT5tRG9TeW5jRmxhZ091dDsNCi0JU3luY0lzRm9yY2Vk
T3V0ID0gdGhpcy0+bVN5bmNJc0ZvcmNlZE91dDsNCisJZWxzZSBpZiAocmVz
dWx0ID09IFdBSVRfVElNRU9VVCkNCisJew0KKwkJRG9TeW5jRmxhZ091dCA9
IGZhbHNlOw0KKwkJU3luY0lzRm9yY2VkT3V0ID0gZmFsc2U7DQorCX0NCisJ
ZWxzZQ0KKwl7DQorCQk6OnN5c2xvZyhMT0dfRVJSLCAiVW5leHBlY3RlZCBy
ZXN1bHQgZnJvbSAiDQorCQkJIldhaXRGb3JTaW5nbGVPYmplY3Q6IGVycm9y
ICVkIiwgR2V0TGFzdEVycm9yKCkpOw0KKwl9DQogDQogCXJldHVybjsNCiAj
ZWxzZSAvLyAhIFdJTjMyDQpAQCAtOTUzLDcgKzEwNjcsNyBAQA0KIAkJCXsN
CiAjaWZkZWYgUExBVEZPUk1fQ0FOTk9UX0ZJTkRfUEVFUl9VSURfT0ZfVU5J
WF9TT0NLRVQNCiAJCQkJYm9vbCB1aWRPSyA9IHRydWU7DQotCQkJCTo6c3lz
bG9nKExPR19XQVJOSU5HLCAiT24gdGhpcyBwbGF0Zm9ybSwgbm8gc2VjdXJp
dHkgY2hlY2sgY2FuIGJlIG1hZGUgb24gdGhlIGNyZWRpZW50aWFscyBvZiBw
ZWVycyBjb25uZWN0aW5nIHRvIHRoZSBjb21tYW5kIHNvY2tldC4gKGJiYWNr
dXBjdGwpIik7DQorCQkJCTo6c3lzbG9nKExPR19XQVJOSU5HLCAiT24gdGhp
cyBwbGF0Zm9ybSwgbm8gc2VjdXJpdHkgY2hlY2sgY2FuIGJlIG1hZGUgb24g
dGhlIGNyZWRlbnRpYWxzIG9mIHBlZXJzIGNvbm5lY3RpbmcgdG8gdGhlIGNv
bW1hbmQgc29ja2V0LiAoYmJhY2t1cGN0bCkiKTsNCiAjZWxzZQ0KIAkJCQkv
LyBTZWN1cml0eSBjaGVjayAtLSBkb2VzIHRoZSBwcm9jZXNzIGNvbm5lY3Rp
bmcgdG8gdGhpcyBzb2NrZXQgaGF2ZQ0KIAkJCQkvLyB0aGUgc2FtZSBVSUQg
YXMgdGhpcyBwcm9jZXNzPw0KQEAgLTEwMjMsOCArMTEzNywxMyBAQA0KIAkJ
d2hpbGUobXBDb21tYW5kU29ja2V0SW5mby0+bXBHZXRMaW5lICE9IDAgJiYg
IW1wQ29tbWFuZFNvY2tldEluZm8tPm1wR2V0TGluZS0+SXNFT0YoKQ0KIAkJ
CSYmIG1wQ29tbWFuZFNvY2tldEluZm8tPm1wR2V0TGluZS0+R2V0TGluZShj
b21tYW5kLCBmYWxzZSAvKiBubyBwcmVwcm9jZXNzaW5nICovLCB0aW1lb3V0
KSkNCiAJCXsNCi0JCQlUUkFDRTEoIlJlY2VpdmluZyBjb21tYW5kICclcycg
b3ZlciBjb21tYW5kIHNvY2tldFxuIiwgY29tbWFuZC5jX3N0cigpKTsNCi0J
CQkNCisJCQlUUkFDRTEoIlJlY2VpdmluZyBjb21tYW5kICclcycgb3ZlciBj
b21tYW5kIHNvY2tldFxuIiwgDQorCQkJCWNvbW1hbmQuY19zdHIoKSk7DQor
DQorCQkJI2lmZGVmIFdJTjMyDQorCQkJU2V0RXZlbnQobWhDb21tYW5kUmVj
ZWl2ZWRFdmVudCk7DQorCQkJI2VuZGlmDQorDQogCQkJYm9vbCBzZW5kT0sg
PSBmYWxzZTsNCiAJCQlib29sIHNlbmRSZXNwb25zZSA9IHRydWU7DQogCQkN
CkBAIC0xMTM3LDEzICsxMjU2LDkgQEANCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQ0KIHZvaWQgQmFja3VwRGFlbW9uOjpTZW5kU3luY1N0
YXJ0T3JGaW5pc2goYm9vbCBTZW5kU3RhcnQpDQogew0KLQkvLyBUaGUgYmJh
Y2t1cGN0bCBwcm9ncmFtIGNhbid0IHJlbHkgb24gYSBzdGF0ZSBjaGFuZ2Us
IGJlY2F1c2UgaXQgbWF5IG5ldmVyDQotCS8vIGNoYW5nZSBpZiB0aGUgc2Vy
dmVyIGRvZXNuJ3QgbmVlZCB0byBiZSBjb250YWN0ZWQuDQorCS8vIFRoZSBi
YmFja3VwY3RsIHByb2dyYW0gY2FuJ3QgcmVseSBvbiBhIHN0YXRlIGNoYW5n
ZSwgYmVjYXVzZSBpdCANCisJLy8gbWF5IG5ldmVyIGNoYW5nZSBpZiB0aGUg
c2VydmVyIGRvZXNuJ3QgbmVlZCB0byBiZSBjb250YWN0ZWQuDQogDQotI2lm
ZGVmIF9fTUlOR1czMl9fDQotI3dhcm5pbmcgcmFjZSBjb25kaXRpb246IHdo
YXQgaGFwcGVucyBpZiBzb2NrZXQgaXMgY2xvc2VkPw0KLSNlbmRpZg0KLQ0K
IAlpZiAobXBDb21tYW5kU29ja2V0SW5mbyAhPSBOVUxMICYmDQogI2lmZGVm
IFdJTjMyDQogCSAgICBtcENvbW1hbmRTb2NrZXRJbmZvLT5tTGlzdGVuaW5n
U29ja2V0LklzQ29ubmVjdGVkKCkNCkBAIC0xMTUyLDE1ICsxMjY3LDE4IEBA
DQogI2VuZGlmDQogCSAgICApDQogCXsNCi0JCWNvbnN0IGNoYXIqIG1lc3Nh
Z2UgPSBTZW5kU3RhcnQgPyAic3RhcnQtc3luY1xuIiA6ICJmaW5pc2gtc3lu
Y1xuIjsNCisJCXN0ZDo6c3RyaW5nIG1lc3NhZ2UgPSBTZW5kU3RhcnQgPyAi
c3RhcnQtc3luYyIgOiAiZmluaXNoLXN5bmMiOw0KIAkJdHJ5DQogCQl7DQog
I2lmZGVmIFdJTjMyDQotCQkJbXBDb21tYW5kU29ja2V0SW5mby0+bUxpc3Rl
bmluZ1NvY2tldC5Xcml0ZShtZXNzYWdlLCANCi0JCQkJKGludClzdHJsZW4o
bWVzc2FnZSkpOw0KKwkJCUVudGVyQ3JpdGljYWxTZWN0aW9uKCZtTWVzc2Fn
ZVF1ZXVlTG9jayk7DQorCQkJbU1lc3NhZ2VMaXN0LnB1c2hfYmFjayhtZXNz
YWdlKTsNCisJCQlTZXRFdmVudChtaE1lc3NhZ2VUb1NlbmRFdmVudCk7DQor
CQkJTGVhdmVDcml0aWNhbFNlY3Rpb24oJm1NZXNzYWdlUXVldWVMb2NrKTsN
CiAjZWxzZQ0KLQkJCW1wQ29tbWFuZFNvY2tldEluZm8tPm1wQ29ubmVjdGVk
U29ja2V0LT5Xcml0ZShtZXNzYWdlLA0KLQkJCQlzdHJsZW4obWVzc2FnZSkp
Ow0KKwkJCW1lc3NhZ2UgKz0gIlxuIjsNCisJCQltcENvbW1hbmRTb2NrZXRJ
bmZvLT5tcENvbm5lY3RlZFNvY2tldC0+V3JpdGUoDQorCQkJCW1lc3NhZ2Uu
Y19zdHIoKSwgbWVzc2FnZS5zaXplKCkpOw0KICNlbmRpZg0KIAkJfQ0KIAkJ
Y2F0Y2goLi4uKQ0KQEAgLTE3NTYsNDAgKzE4NzQsMzcgQEANCiAJLy8gY29t
bWFuZCBzb2NrZXQgaWYgdGhlcmUncyBhbiBlcnJvcg0KIA0KIAljaGFyIG5l
d1N0YXRlWzY0XTsNCi0JY2hhciBuZXdTdGF0ZVNpemUgPSBzcHJpbnRmKG5l
d1N0YXRlLCAic3RhdGUgJWRcbiIsIFN0YXRlKTsNCisJc3ByaW50ZihuZXdT
dGF0ZSwgInN0YXRlICVkIiwgU3RhdGUpOw0KKwlzdGQ6OnN0cmluZyBtZXNz
YWdlID0gbmV3U3RhdGU7DQogDQogI2lmZGVmIFdJTjMyDQotCSNpZm5kZWYg
X01TQ19WRVINCi0JCSN3YXJuaW5nIEZJWCBNRTogcmFjZSBjb25kaXRpb24N
Ci0JI2VuZGlmDQorCUVudGVyQ3JpdGljYWxTZWN0aW9uKCZtTWVzc2FnZVF1
ZXVlTG9jayk7DQorCW1NZXNzYWdlTGlzdC5wdXNoX2JhY2sobmV3U3RhdGUp
Ow0KKwlTZXRFdmVudChtaE1lc3NhZ2VUb1NlbmRFdmVudCk7DQorCUxlYXZl
Q3JpdGljYWxTZWN0aW9uKCZtTWVzc2FnZVF1ZXVlTG9jayk7DQorI2Vsc2UN
CisJbWVzc2FnZSArPSAiXG4iOw0KIA0KLQkvLyB3aGF0IGhhcHBlbnMgaWYg
dGhlIHNvY2tldCBpcyBjbG9zZWQgYnkgdGhlIG90aGVyIHRocmVhZCBiZWZv
cmUNCi0JLy8gd2UgY2FuIHdyaXRlIHRvIGl0PyBOdWxsIHBvaW50ZXIgZGVy
ZWYgYXQgYmVzdC4NCi0JaWYgKG1wQ29tbWFuZFNvY2tldEluZm8gJiYgDQot
CSAgICBtcENvbW1hbmRTb2NrZXRJbmZvLT5tTGlzdGVuaW5nU29ja2V0Lklz
Q29ubmVjdGVkKCkpDQorCWlmKG1wQ29tbWFuZFNvY2tldEluZm8gPT0gMCkN
CiAJew0KLQkJdHJ5DQotCQl7DQotCQkJbXBDb21tYW5kU29ja2V0SW5mby0+
bUxpc3RlbmluZ1NvY2tldC5Xcml0ZShuZXdTdGF0ZSwgbmV3U3RhdGVTaXpl
KTsNCi0JCX0NCi0JCWNhdGNoKC4uLikNCi0JCXsNCi0JCQlDbG9zZUNvbW1h
bmRDb25uZWN0aW9uKCk7DQotCQl9DQorCQlyZXR1cm47DQogCX0NCi0jZWxz
ZQ0KLQlpZihtcENvbW1hbmRTb2NrZXRJbmZvICE9IDAgJiYgbXBDb21tYW5k
U29ja2V0SW5mby0+bXBDb25uZWN0ZWRTb2NrZXQuZ2V0KCkgIT0gMCkNCisN
CisJaWYgKG1wQ29tbWFuZFNvY2tldEluZm8tPm1wQ29ubmVjdGVkU29ja2V0
LmdldCgpID09IDApDQogCXsNCi0JCS8vIFNvbWV0aGluZyBjb25uZWN0ZWQg
dG8gdGhlIGNvbW1hbmQgc29ja2V0LCB0ZWxsIGl0IGFib3V0IHRoZSBuZXcg
c3RhdGUNCi0JCXRyeQ0KLQkJew0KLQkJCW1wQ29tbWFuZFNvY2tldEluZm8t
Pm1wQ29ubmVjdGVkU29ja2V0LT5Xcml0ZShuZXdTdGF0ZSwgbmV3U3RhdGVT
aXplKTsNCi0JCX0NCi0JCWNhdGNoKC4uLikNCi0JCXsNCi0JCQlDbG9zZUNv
bW1hbmRDb25uZWN0aW9uKCk7DQotCQl9DQorCQlyZXR1cm47DQogCX0NCisN
CisJLy8gU29tZXRoaW5nIGNvbm5lY3RlZCB0byB0aGUgY29tbWFuZCBzb2Nr
ZXQsIHRlbGwgaXQgYWJvdXQgdGhlIG5ldyBzdGF0ZQ0KKwl0cnkNCisJew0K
KwkJbXBDb21tYW5kU29ja2V0SW5mby0+bXBDb25uZWN0ZWRTb2NrZXQtPldy
aXRlKG1lc3NhZ2UuY19zdHIoKSwNCisJCQltZXNzYWdlLmxlbmd0aCgpKTsN
CisJfQ0KKwljYXRjaCguLi4pDQorCXsNCisJCUNsb3NlQ29tbWFuZENvbm5l
Y3Rpb24oKTsNCisJfQ0KICNlbmRpZg0KIH0NCiANCkBAIC0yMTczLDExICsy
Mjg4LDExIEBADQogc3RhdGljIGNvbnN0IHN0ZDo6c3RyaW5nIFNUT1JFT0JK
RUNUSU5GT19NQUdJQ19JRF9TVFJJTkcgPSAiQkJBQ0tVUEQtU1RBVEUiOw0K
IHN0YXRpYyBjb25zdCBpbnQgU1RPUkVPQkpFQ1RJTkZPX1ZFUlNJT04gPSAx
Ow0KIA0KLXZvaWQgQmFja3VwRGFlbW9uOjpTZXJpYWxpemVTdG9yZU9iamVj
dEluZm8oaW50NjRfdCBhQ2xpZW50U3RvcmVNYXJrZXIsIGJveF90aW1lX3Qg
dGhlTGFzdFN5bmNUaW1lLCBib3hfdGltZV90IHRoZU5leHRTeW5jVGltZSkg
Y29uc3QNCitib29sIEJhY2t1cERhZW1vbjo6U2VyaWFsaXplU3RvcmVPYmpl
Y3RJbmZvKGludDY0X3QgYUNsaWVudFN0b3JlTWFya2VyLCBib3hfdGltZV90
IHRoZUxhc3RTeW5jVGltZSwgYm94X3RpbWVfdCB0aGVOZXh0U3luY1RpbWUp
IGNvbnN0DQogew0KIAlpZighR2V0Q29uZmlndXJhdGlvbigpLktleUV4aXN0
cygiU3RvcmVPYmplY3RJbmZvRmlsZSIpKQ0KIAl7DQotCQlyZXR1cm47DQor
CQlyZXR1cm4gZmFsc2U7DQogCX0NCiANCiAJc3RkOjpzdHJpbmcgU3RvcmVP
YmplY3RJbmZvRmlsZSA9IA0KQEAgLTIxODUsMTMgKzIzMDAsMTMgQEANCiAN
CiAJaWYgKFN0b3JlT2JqZWN0SW5mb0ZpbGUuc2l6ZSgpIDw9IDApDQogCXsN
Ci0JCXJldHVybjsNCisJCXJldHVybiBmYWxzZTsNCiAJfQ0KIA0KIAl0cnkN
CiAJew0KIAkJRmlsZVN0cmVhbSBhRmlsZShTdG9yZU9iamVjdEluZm9GaWxl
LmNfc3RyKCksIA0KIAkJCU9fV1JPTkxZIHwgT19DUkVBVCB8IE9fVFJVTkMp
Ow0KIAkJQXJjaGl2ZSBhbkFyY2hpdmUoYUZpbGUsIDApOw0KIA0KIAkJYW5B
cmNoaXZlLldyaXRlKFNUT1JFT0JKRUNUSU5GT19NQUdJQ19JRF9WQUxVRSk7
DQpAQCAtMjIzNiw2ICsyMzU1LDggQEANCiAJCQkibm90IGFjY2Vzc2libGUg
b3IgY291bGQgbm90IGJlIGNyZWF0ZWQiLCANCiAJCQlTdG9yZU9iamVjdElu
Zm9GaWxlLmNfc3RyKCkpOw0KIAl9DQorDQorCXJldHVybiB0cnVlOw0KIH0N
CiANCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KQEAgLTI0
MjAsMjUgKzI1NDEsMTQgQEANCiAJCXJldHVybiBmYWxzZTsNCiAJfQ0KIA0K
LQlzdGQ6OnN0cmluZyBzdG9yZU9iamVjdEluZm9GaWxlKEdldENvbmZpZ3Vy
YXRpb24oKS5HZXRLZXlWYWx1ZSgiU3RvcmVPYmplY3RJbmZvRmlsZSIpKTsN
CisJc3RkOjpzdHJpbmcgU3RvcmVPYmplY3RJbmZvRmlsZSA9IA0KKwkJR2V0
Q29uZmlndXJhdGlvbigpLkdldEtleVZhbHVlKCJTdG9yZU9iamVjdEluZm9G
aWxlIik7DQogDQotCS8vIENoZWNrIHRvIHNlZSBpZiB0aGUgZmlsZSBleGlz
dHMNCi0JaWYoIUZpbGVFeGlzdHMoc3RvcmVPYmplY3RJbmZvRmlsZS5jX3N0
cigpKSkNCisJaWYgKDo6dW5saW5rKFN0b3JlT2JqZWN0SW5mb0ZpbGUuY19z
dHIoKSkgIT0gMCkNCiAJew0KLQkJLy8gRmlsZSBkb2Vzbid0IGV4aXN0IC0t
IHNvIGNhbid0IGJlIGRlbGV0ZWQuIEJ1dCBzb21ldGhpbmcgaXNuJ3QgcXVp
dGUgcmlnaHQsIHNvIGxvZyBhIG1lc3NhZ2UNCi0JCTo6c3lzbG9nKExPR19F
UlIsICJFeHBlY3RlZCB0byBiZSBhYmxlIHRvIGRlbGV0ZSAiDQotCQkJInN0
b3JlIG9iamVjdCBpbmZvIGZpbGUgJyVzJywgYnV0IHRoZSBmaWxlIGRpZCBu
b3QgZXhpc3QuIiwNCi0JCQlzdG9yZU9iamVjdEluZm9GaWxlLmNfc3RyKCkp
Ow0KLQkJLy8gUmV0dXJuIHRydWUgdG8gc3RvcCB0aGluZ3MgZ29pbmcgYXJv
dW5kIGluIGEgbG9vcA0KLQkJcmV0dXJuIHRydWU7DQotCX0NCi0NCi0JLy8g
QWN0dWFsbHkgZGVsZXRlIGl0DQotCWlmKDo6dW5saW5rKHN0b3JlT2JqZWN0
SW5mb0ZpbGUuY19zdHIoKSkgIT0gMCkNCi0Jew0KIAkJOjpzeXNsb2coTE9H
X0VSUiwgIkZhaWxlZCB0byBkZWxldGUgdGhlIG9sZCAiDQogCQkJInN0b3Jl
IG9iamVjdCBpbmZvIGZpbGUgJyVzJzogJXMiLA0KLQkJCXN0b3JlT2JqZWN0
SW5mb0ZpbGUuY19zdHIoKSwgc3RyZXJyb3IoZXJybm8pKTsNCisJCQlTdG9y
ZU9iamVjdEluZm9GaWxlLmNfc3RyKCksIHN0cmVycm9yKGVycm5vKSk7DQog
CQlyZXR1cm4gZmFsc2U7DQogCX0NCiANCg==

--8323328-227556070-1153617598=:9244--



More information about the Boxbackup-dev mailing list