Re: small redesign...

Ɓukasz Tasz <[email protected]> Fri, 24 Oct 2014 10:27:20 +0200
Newsgroups gmane.comp.compilers.distcc
Message-ID <CAGRr-NjQvQ4Ro-QkTeEpuvfmGgNvVFXzyHmWokZg2KbcTtm88Q@mail.gmail.com>
--001a113481e4e3f231050626f4ab
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Hi Martin

What I have noticed.
Client tries to connect distccd 3 times with 500ms delays in between.
Linux kernel by default accept 128 connection.
If client creates connection, even if no executors are avaliable,
connection is accepted and queued by kernel running distccd.
This leads to situation that client thinks that distccd is reserved,
but in fact connection still waits to be accepted by distccd server.
I suspect that then client starts communication too fast, distcc wont
receive DIST token, and both sides waits, communication is broken, and
then timeouts are applied for client default is applied, for server
there is no defaults.

fail scenarion is:
one distccd, and two distcc users, both of them will try to compile
with DISTCC_HOSTS=3Ddistccd/1,cpp,lzo, both users have lot of big
objects, cluster is overloaded with ratio 2.
This still should be OK, that third, and forth user will join cluster.

Easy reproducer is to set one distcc, and set distcc_hosts=3Ddistccd/20,
this is broken configuration, but simulates overload by 20 - 20
developers uses cluster in a same time.
Please remember that those are exceptional situation, but developer
can start compilation with -j 1000 from his laptop, and cluster will
timeout, then receiving 1000 jobs on a laptop will end with memmory
killer :D
Those are exceptional situation, and somehow cluster should handle that.

In the attachement, next to some pump changes, you can find change
which is moving making connection to very beginning, when distcc is
picking host, also remote connection is made. if this will fail, discc
follow default behaviour, goes sleep for one sec, and will pick host
again. But this requires additional administration change on distccd
machine:
iptables -I INPUT -p tcp --dport 3632 -m connlimit --connlimit-above
<NUMBER OF DISTCCD> --connlimit-mask 0 -j REJECT --reject-with
tcp-reset
which accept only number of connection which equals to number of executors.

So far so good!
remark, patch is done on top of arankine_distcc_issue16-r335, since
his pump changes are making pump mode working on my environment.
But distccd allocation I tested also on latest official distcc release.

let me know what you think!

with best regards
Lukasz



=C5=81ukasz Tasz


2014-10-24 2:42 GMT+02:00 Martin Pool <[email protected]>:
> It seems like if there's nowhere to execute the job, we want the client
> program to just pause, before using too many resources, until it gets
> unqueued by a server ready to do the job. (Or, by a local slot being
> available.)
>
>
> On Thu Oct 16 2014 at 2:43:35 AM =C5=81ukasz Tasz <[email protected]> wrote:
>>
>> Hi Martin,
>>
>> Lets assume that you can trigger more compilation tasks executors then y=
ou
>> have.
>> In this scenario you are facing situation that cluster is saturated.
>> When such a compilation will be triggered by two developers, or two CI
>> (e.g jenkins) jobs, then cluster is saturated twice...
>>
>> Default behaviour is to lock locally slot, and try to connect three
>> times, if not, fallback, if fallback is disabled CI got failed build
>> (fallback is not the case, since local machine cannot handle -j
>> $(distcc -j)).
>>
>> consider scenario, I have 1000 objects, 500 executors,
>> - clean build on one machine takes
>>   1000 * 20 sec (one obj) =3D 20000 / 16 processors =3D 1000 sec,
>> - on cluster (1000/500) * 20 sec =3D 40 sec
>>
>> Saturating cluster was impossible without pump mode, but now with pump
>> mode after "warm up" effect, pump can dispatch many tasks, and I faced
>> situation that saturated cluster destroys almost  every compilation.
>>
>> My expectation is that cluster wont reject my connect, or reject will
>> be handled, either by client, either by server.
>>
>> by server:
>> - accept every connetion,
>> - fork child if not accepted by child,
>> - in case of pump prepare local dir structure, receive headers
>> - --critical section starts here-- multi value semaphore with value
>> maxchild
>>   - execute job
>> - release semaphore
>>
>>
>> Also what you suggested may be even better solution, since client will
>> pick first avaliable executor instead of entering queue, so distcc
>> could make connection already in function dcc_lock_one()
>>
>> I already tried to set DISTCC_DIR on a common nfs share, but in case
>> you are triggering so many jobs, this started to be bottle neck... I
>> won't tell about locking on nfs, and also scenario that somebody will
>> make a lock on nfs and machine will got crash - will not work by
>> design :)
>>
>> I know that scenario is not happening very often, and it has more or
>> less picks characteristic, but we should be happy that distcc cluster
>> is saturated and this case should be handled.
>>
>> hope it's more clear now!
>> br
>> LT
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> =C5=81ukasz Tasz
>>
>>
>> 2014-10-16 1:39 GMT+02:00 Martin Pool <[email protected]>:
>> > Can you try to explain more clearly what difference in queueing behavi=
or
>> > you
>> > expect from this change?
>> >
>> > I think probably the main change that's needed is for the client to as=
k
>> > all
>> > masters if they have space, to avoid needing to effectively poll by
>> > retrying, or getting stuck waiting for a particular server.
>> >
>> > On Wed, Oct 15, 2014 at 12:53 PM, =C5=81ukasz Tasz <[email protected]> wr=
ote:
>> >>
>> >> Hi Guys,
>> >>
>> >> please correct me if I'm wrong,
>> >> - currently distcc tries to connect server 3 times, with small delay,
>> >> - server forks x childs and all of them are trying to accept incoming
>> >> connection.
>> >> If server runs out of childs (all of them are busy), client will
>> >> fallback, and within next 60 sec will not try this machine.
>> >>
>> >> What do you think about redesigning distcc in a way that master serve=
r
>> >> will always accept inconing connection, fork a child, but in a same
>> >> time only x of them will be able to enter compilation
>> >> task(dcc_spawn_child)? (mayby preforking still could be used?)
>> >>
>> >> This may create kind of queue, client always can decide by his own, i=
f
>> >> can wait some  time, or maximum is DISTCC_IO_TIMEOUT, but still it's
>> >> faster to wait, since probably on a cluster side it's just a pick of
>> >> saturation then making falback to local machine.
>> >>
>> >> currently I'm facing situation that many jobs are making fallback, an=
d
>> >> localmachine is being killed by make's -j calculated for distccd...
>> >>
>> >> other trick maybe to pick different machine, if current is busy, but
>> >> this may be much more complex in my opinion.
>> >>
>> >> what do you think?
>> >> regards
>> >> =C5=81ukasz Tasz
>> >> __
>> >> distcc mailing list            http://distcc.samba.org/
>> >> To unsubscribe or change options:
>> >> https://lists.samba.org/mailman/listinfo/distcc
>> >
>> >
>> >
>> >
>> > --
>> > Martin

--001a113481e4e3f231050626f4ab
Content-Type: text/x-patch; charset=UTF-8; name="tasz_lukasz.patch"
Content-Disposition: attachment; filename="tasz_lukasz.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_i1n909p10

ZGlmZiAtLWV4Y2x1ZGU9LnN2biAtcnVwTiBkaXN0Y2MtMy4yLWFyYW5raW5lL2luY2x1ZGVfc2Vy
dmVyL2Jhc2ljcy5weSBkaXN0Y2MtMy4ycmMyX25ldy9pbmNsdWRlX3NlcnZlci9iYXNpY3MucHkK
LS0tIGRpc3RjYy0zLjItYXJhbmtpbmUvaW5jbHVkZV9zZXJ2ZXIvYmFzaWNzLnB5CTIwMTQtMDkt
MDQgMTE6NDQ6NDEuMDAwMDAwMDAwICswMjAwCisrKyBkaXN0Y2MtMy4ycmMyX25ldy9pbmNsdWRl
X3NlcnZlci9iYXNpY3MucHkJMjAxNC0wOS0wNSAxMToyOTo0OC4yMzg1NjE4ODcgKzAyMDAKQEAg
LTE4MCw3ICsxODAsNyBAQCBNQVhfRU1BSUxTX1RPX1NFTkQgPSAzCiAjIGltcG9ydGFuY2UgdG8g
YnVpbGRzIHRoYXQgaW52b2x2ZSBjb21waWxhdGlvbnMgdGhhdCBkaXN0Y2MtcHVtcCBkb2VzIG5v
dCBncm9rOgogIyBhbiBhbW91bnQgb2YgdGltZSByb3VnaGx5IGVxdWFsIHRvIHRoaXMgcXVvdGEg
aXMgd2FzdGVkIGJlZm9yZSBDUFAgaXMgaW52b2tlZAogIyBpbnN0ZWFkLgotVVNFUl9USU1FX1FV
T1RBID0gMy44ICAjIHNlY29uZHMKK1VTRVJfVElNRV9RVU9UQSA9IDIwICAjIHNlY29uZHMKIAog
IyBIb3cgb2Z0ZW4gdGhlIGZvbGxvd2luZyBxdWVzdGlvbiBpcyBhbnN3ZXJlZDogaGFzIHRvbyBt
dWNoIHVzZXIgdGltZSBiZWVuCiAjIHNwZW50IGluIHRoZSBpbmNsdWRlIGhhbmRsZXIgc2Vydmlj
aW5nIHRoZSBjdXJyZW50IHJlcXVlc3Q/CmRpZmYgLS1leGNsdWRlPS5zdm4gLXJ1cE4gZGlzdGNj
LTMuMi1hcmFua2luZS9NYWtlZmlsZS5pbiBkaXN0Y2MtMy4ycmMyX25ldy9NYWtlZmlsZS5pbgot
LS0gZGlzdGNjLTMuMi1hcmFua2luZS9NYWtlZmlsZS5pbgkyMDE0LTA5LTA0IDExOjQ0OjQxLjAw
MDAwMDAwMCArMDIwMAorKysgZGlzdGNjLTMuMnJjMl9uZXcvTWFrZWZpbGUuaW4JMjAxNC0xMC0y
MSAxNToxMDowOS4yMTE0NTM3NzUgKzAyMDAKQEAgLTEwNzIsOSArMTA3Miw3IEBAIGluc3RhbGwt
aW5jbHVkZS1zZXJ2ZXI6IGluY2x1ZGUtc2VydmVyIHAKIAkgICAgY3AgLWYgIiQoaW5jbHVkZV9z
ZXJ2ZXJfYnVpbGRkaXIpL2luc3RhbGwubG9nIiAiJChQWVRIT05fSU5TVEFMTF9SRUNPUkQpIjsg
XAogCSAgZmk7IFwKIAkgICQobWtpbnN0YWxsZGlycykgIiQoREVTVERJUikkKGJpbmRpcikiICYm
IFwKLQkgIElOQ0xVREVfU0VSVkVSPWBncmVwICcvaW5jbHVkZV9zZXJ2ZXIucHkkJCcgIiQoaW5j
bHVkZV9zZXJ2ZXJfYnVpbGRkaXIpL2luc3RhbGwubG9nImAgJiYgXAotCSAgc2VkICJzLF5pbmNs
dWRlX3NlcnZlcj0nJyxpbmNsdWRlX3NlcnZlcj0nJCRJTkNMVURFX1NFUlZFUicsIiBcCi0JICAg
IHB1bXAgPiAiJChpbmNsdWRlX3NlcnZlcl9idWlsZGRpcikvcHVtcCIgJiYgXAorCSAgY3AgcHVt
cCAgIiQoaW5jbHVkZV9zZXJ2ZXJfYnVpbGRkaXIpL3B1bXAiICYmIFwKIAkgICQoSU5TVEFMTF9Q
Uk9HUkFNKSAiJChpbmNsdWRlX3NlcnZlcl9idWlsZGRpcikvcHVtcCIgIiQoREVTVERJUikkKGJp
bmRpcikiOyBcCiAJZmkKIApkaWZmIC0tZXhjbHVkZT0uc3ZuIC1ydXBOIGRpc3RjYy0zLjItYXJh
bmtpbmUvcHVtcC5pbiBkaXN0Y2MtMy4ycmMyX25ldy9wdW1wLmluCi0tLSBkaXN0Y2MtMy4yLWFy
YW5raW5lL3B1bXAuaW4JMjAxNC0wOS0wNCAxMTo0NDo0MS4wMDAwMDAwMDAgKzAyMDAKKysrIGRp
c3RjYy0zLjJyYzJfbmV3L3B1bXAuaW4JMjAxNC0xMC0yMSAxNToxOTowNS40MTIzMjM2NTYgKzAy
MDAKQEAgLTQwLDcgKzQwLDEyIEBAIHNyY2Rpcj1Ac3JjZGlyQAogIyB0byB0aGUgaW5zdGFsbGVk
IGluY2x1ZGVfc2VydmVyLnB5LgogIyBOT1RFOiBETyBOT1QgQ0hBTkdFIFRIRSBMSU5FIEJFTE9X
IFdJVEhPVVQgQ0hBTkdJTkcgVEhFIFNFRCBJTgogIyAgICAgICBNYWtlZmlsZS5pbjppbnN0YWxs
LWluY2x1ZGUtc2VydmVyLgotaW5jbHVkZV9zZXJ2ZXI9JycKKworI3Rhc3psdWsgdGhpcyBzaG91
bGQgYmUgY2FsY3VsYXRlZCB3aGlsZSBydW50aW1lLCBpbmNsdWRlX3NlcnZlci5weSBpcyBhbHdh
eXMgcmVsYXRpdmVseSB0byBwdW1wCisjL3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMv
aW5jbHVkZV9zZXJ2ZXIKKyMvdXNyL2Jpbi9wdW1wCitjZGlyPSQocmVhZGxpbmsgLWYgJDApCitp
bmNsdWRlX3NlcnZlcj0kKHJlYWRsaW5rIC1mICQoZGlybmFtZSAkY2RpcikvLi4vbGliL3B5dGhv
bjIuNy9zaXRlLXBhY2thZ2VzL2luY2x1ZGVfc2VydmVyL2luY2x1ZGVfc2VydmVyLnB5KQogCiAK
IENoZWNrVXNhZ2UoKSB7CkBAIC00OTcsNyArNTAyLDcgQEAgRHVtcEVudmlyb25tZW50VmFyaWFi
bGVzKCkgewogICBpZiBbIC1uICIkRElTVENDX0hPU1RTIiBdOyB0aGVuCiAgICAgZWNobyBleHBv
cnQgRElTVENDX0hPU1RTPVwnJERJU1RDQ19IT1NUU1wnCiAgIGZpCi0gIGVjaG8gZXhwb3J0IFBB
VEg9XCckZGlzdGNjX2xvY2F0aW9uOiRQQVRIXCcKKyAgI2VjaG8gZXhwb3J0IFBBVEg9XCckZGlz
dGNjX2xvY2F0aW9uOiRQQVRIXCcKIH0KIAogTWFpbigpIHsKQEAgLTUzNyw3ICs1NDIsNyBAQCBN
YWluKCkgewogICAgICAgQW5ub3VuY2UKICAgICAgIFN0YXJ0SW5jbHVkZVNlcnZlckFuZERldGVy
bWluZUhvc3RzIHx8IGV4aXQgMQogICAgICAgIyBOb3cgZXhlY3V0ZSB0aGUgY29tbWFuZCB0aGF0
IGlzIHRoZSBhcmd1bWVudCBvZiAncHVtcCcuCi0gICAgICBQQVRIPSIkZGlzdGNjX2xvY2F0aW9u
OiRQQVRIIiBcCisgICAgICAjUEFUSD0iJGRpc3RjY19sb2NhdGlvbjokUEFUSCIgXAogICAgICAg
ICAiJEAiCiAgICAgICAjIFdoZW4gd2UgZXhpdCwgdGhlIFNodXREb3duIGZ1bmN0aW9uIHdpbGwg
YmUgY2FsbGVkLgogICAgICAgOzsKUGxpa2kgYmluYXJuZSBkaXN0Y2MtMy4yLWFyYW5raW5lLy5w
dW1wLmluLnN3cCBpIGRpc3RjYy0zLjJyYzJfbmV3Ly5wdW1wLmluLnN3cCBzacSZIHLDs8W8bmnE
hQpQbGlraSBiaW5hcm5lIGRpc3RjYy0zLjItYXJhbmtpbmUvc3JjLy5hcmcuYy5zd3AgaSBkaXN0
Y2MtMy4ycmMyX25ldy9zcmMvLmFyZy5jLnN3cCBzacSZIHLDs8W8bmnEhQpkaWZmIC0tZXhjbHVk
ZT0uc3ZuIC1ydXBOIGRpc3RjYy0zLjItYXJhbmtpbmUvc3JjL2NvbXBpbGUuYyBkaXN0Y2MtMy4y
cmMyX25ldy9zcmMvY29tcGlsZS5jCi0tLSBkaXN0Y2MtMy4yLWFyYW5raW5lL3NyYy9jb21waWxl
LmMJMjAxNC0wOS0wNCAxMTo0NDo0MS4wMDAwMDAwMDAgKzAyMDAKKysrIGRpc3RjYy0zLjJyYzJf
bmV3L3NyYy9jb21waWxlLmMJMjAxNC0xMC0xNiAxNDoxMDo1My44NDI2MDc3NDQgKzAyMDAKQEAg
LTUwNCw2ICs1MDQsOSBAQCBkY2NfYnVpbGRfc29tZXdoZXJlKGNoYXIgKmFyZ3ZbXSwKICAgICBz
dHJ1Y3QgZGNjX2hvc3RkZWYgKmhvc3QgPSBOVUxMOwogICAgIGNoYXIgKmRpc2NyZXBhbmN5X2Zp
bGVuYW1lID0gTlVMTDsKICAgICBjaGFyICoqbmV3X2FyZ3Y7CisgICAgaW50IHRvX25ldF9mZCA9
IC0xLCBmcm9tX25ldF9mZCA9IC0xOworICAgIHBpZF90IHNzaF9waWQgPSAwOworICAgIAogCiAg
ICAgaWYgKChyZXQgPSBkY2NfZXhwYW5kX3ByZXByb2Nlc3Nvcl9vcHRpb25zKCZhcmd2KSkgIT0g
MCkKICAgICAgICAgZ290byBjbGVhbl91cDsKQEAgLTU0OSw3ICs1NTIsNyBAQCBkY2NfYnVpbGRf
c29tZXdoZXJlKGNoYXIgKmFyZ3ZbXSwKIAogICAgIC8qIENob29zZSB0aGUgZGlzdGNjIHNlcnZl
ciBob3N0ICh3aGljaCBjb3VsZCBiZSBlaXRoZXIgYSByZW1vdGUKICAgICAgKiBob3N0IG9yIGxv
Y2FsaG9zdCkgYW5kIGFjcXVpcmUgdGhlIGxvY2sgZm9yIGl0LiAgKi8KLSAgICBpZiAoKHJldCA9
IGRjY19waWNrX2hvc3RfZnJvbV9saXN0X2FuZF9sb2NrX2l0KCZob3N0LCAmY3B1X2xvY2tfZmQp
KSAhPSAwKSB7CisgICAgaWYgKChyZXQgPSBkY2NfcGlja19ob3N0X2Zyb21fbGlzdF9hbmRfbG9j
a19pdCgmaG9zdCwgJmNwdV9sb2NrX2ZkLCAmdG9fbmV0X2ZkLCAmZnJvbV9uZXRfZmQsICZzc2hf
cGlkKSkgIT0gMCkgewogICAgICAgICAvKiBEb2Vzbid0IGhhcHBlbiBhdCB0aGUgbW9tZW50OiBh
bGwgZmFpbHVyZXMgYXJlIG1hc2tlZCBieQogICAgICAgICAgICByZXR1cm5pbmcgbG9jYWxob3N0
LiAqLwogICAgICAgICBnb3RvIGZhbGxiYWNrOwpAQCAtNjM4LDcgKzY0MSw4IEBAIGRjY19idWls
ZF9zb21ld2hlcmUoY2hhciAqYXJndltdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5lZWRzX2RvdGQgPyBkZXBzX2ZuYW1lIDogTlVMTCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXJ2ZXJfc3RkZXJyX2ZuYW1lLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNwcF9waWQsIGxvY2FsX2NwdV9sb2NrX2ZkLAotICAgICAgICAgICAgICAg
ICAgaG9zdCwgc3RhdHVzKSkgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGhvc3QsIHN0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdG9f
bmV0X2ZkLCAmZnJvbV9uZXRfZmQsICZzc2hfcGlkKSkgIT0gMCkgewogICAgICAgICAvKiBSZXR1
cm5zIHplcm8gaWYgd2Ugc3VjY2Vzc2Z1bGx5IHJhbiB0aGUgY29tcGlsZXIsIGV2ZW4gaWYKICAg
ICAgICAgICogdGhlIGNvbXBpbGVyIGl0c2VsZiBib21iZWQgb3V0LiAqLwogCmRpZmYgLS1leGNs
dWRlPS5zdm4gLXJ1cE4gZGlzdGNjLTMuMi1hcmFua2luZS9zcmMvY29tcGlsZS5oIGRpc3RjYy0z
LjJyYzJfbmV3L3NyYy9jb21waWxlLmgKLS0tIGRpc3RjYy0zLjItYXJhbmtpbmUvc3JjL2NvbXBp
bGUuaAkyMDE0LTA5LTA0IDExOjQ0OjQxLjAwMDAwMDAwMCArMDIwMAorKysgZGlzdGNjLTMuMnJj
Ml9uZXcvc3JjL2NvbXBpbGUuaAkyMDE0LTEwLTE2IDE1OjI0OjI4LjkyNjY0NDU2OSArMDIwMApA
QCAtMjYsMTQgKzI2LDIyIEBACiBpbnQgZGNjX2NvbXBpbGVfcmVtb3RlKGNoYXIgKiphcmd2LAog
ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICppbnB1dF9mbmFtZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciAqY3BwX2ZuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoq
ZmlsZV9uYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKmZpbGVzLAogICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyICpvdXRwdXRfZm5hbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYXIgKmRlcHNfZm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnNlcnZl
cl9zdGRlcnJfZm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIHBpZF90IGNwcF9waWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBsb2NhbF9jcHVfbG9ja19mZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IGRjY19ob3N0ZGVmICpob3N0LAotICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgKnN0YXR1cyk7CisgICAgICAgICAgICAgICAgICAgICAgIGludCAqc3RhdHVzLAor
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnRvX25ldF9mZCwgCisgICAgICAgICAgICAgICAg
ICAgICAgIGludCAqZnJvbV9uZXRfZmQsIAorICAgICAgICAgICAgICAgICAgICAgICBwaWRfdCAq
c3NoX3BpZCk7CisKK3N0YXRpYyBpbnQgZGNjX3JlbW90ZV9jb25uZWN0KHN0cnVjdCBkY2NfaG9z
dGRlZiAqaG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqdG9fbmV0X2Zk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpmcm9tX25ldF9mZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBpZF90ICpzc2hfcGlkKTsKIAogLyogY29tcGlsZS5j
ICovCiAKZGlmZiAtLWV4Y2x1ZGU9LnN2biAtcnVwTiBkaXN0Y2MtMy4yLWFyYW5raW5lL3NyYy9t
b24uYyBkaXN0Y2MtMy4ycmMyX25ldy9zcmMvbW9uLmMKLS0tIGRpc3RjYy0zLjItYXJhbmtpbmUv
c3JjL21vbi5jCTIwMTQtMDktMDQgMTE6NDQ6NDEuMDAwMDAwMDAwICswMjAwCisrKyBkaXN0Y2Mt
My4ycmMyX25ldy9zcmMvbW9uLmMJMjAxNC0wOS0wNSAxMToyODozNC4yNDgwMDg1NTQgKzAyMDAK
QEAgLTcxLDcgKzcxLDcgQEAKICAqIHRha2UgYSB2ZXJ5IGxvbmcgdGltZSwgYW5kIGNvbWJpbmVk
IHdpdGggdGhlIGNoZWNrIHRoYXQgdGhlIHByb2Nlc3MKICAqIGV4aXN0cyB3ZSBjYW4gYWxsb3cg
dGhpcyB0byBiZSByZWFzb25hYmx5IGxhcmdlLgogICovCi1jb25zdCBpbnQgZGNjX3BoYXNlX21h
eF9hZ2UgPSA2MDsKK2NvbnN0IGludCBkY2NfcGhhc2VfbWF4X2FnZSA9IDMwMDsKIAogCiAvKioK
ZGlmZiAtLWV4Y2x1ZGU9LnN2biAtcnVwTiBkaXN0Y2MtMy4yLWFyYW5raW5lL3NyYy9yZW1vdGUu
YyBkaXN0Y2MtMy4ycmMyX25ldy9zcmMvcmVtb3RlLmMKLS0tIGRpc3RjYy0zLjItYXJhbmtpbmUv
c3JjL3JlbW90ZS5jCTIwMTQtMDktMDQgMTE6NDQ6NDEuMDAwMDAwMDAwICswMjAwCisrKyBkaXN0
Y2MtMy4ycmMyX25ldy9zcmMvcmVtb3RlLmMJMjAxNC0xMC0xNiAxNToyOToxOS44NTg3NjYzNDAg
KzAyMDAKQEAgLTY3LDEwICs2NywxMSBAQCBleHRlcm4gZ3NzX2N0eF9pZF90IGRpc3RjY19jdHhf
aGFuZGxlOwogICovCiAKIC8qKgorICogdGFzemx1aywgbW92ZWQgdG8gd2hlcmUuYwogICogT3Bl
biBhIGNvbm5lY3Rpb24gdXNpbmcgZWl0aGVyIGEgVENQIHNvY2tldCBvciBTU0guICBSZXR1cm4g
aW5wdXQKICAqIGFuZCBvdXRwdXQgZmlsZSBkZXNjcmlwdG9ycyAod2hpY2ggbWF5IG9yIG1heSBu
b3QgYmUgZGlmZmVyZW50LikKICAqKi8KLXN0YXRpYyBpbnQgZGNjX3JlbW90ZV9jb25uZWN0KHN0
cnVjdCBkY2NfaG9zdGRlZiAqaG9zdCwKKy8qc3RhdGljIGludCBkY2NfcmVtb3RlX2Nvbm5lY3Qo
c3RydWN0IGRjY19ob3N0ZGVmICpob3N0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50ICp0b19uZXRfZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmZyb21f
bmV0X2ZkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlkX3QgKnNzaF9waWQpCkBA
IC05NSw3ICs5Niw3IEBAIHN0YXRpYyBpbnQgZGNjX3JlbW90ZV9jb25uZWN0KHN0cnVjdCBkY2MK
ICAgICAgICAgcnNfbG9nX2NyaXQoImltcG9zc2libGUgaG9zdCBtb2RlIik7CiAgICAgICAgIHJl
dHVybiBFWElUX0RJU1RDQ19GQUlMRUQ7CiAgICAgfQotfQorfSovCiAKIAogc3RhdGljIGludCBk
Y2Nfd2FpdF9mb3JfY3BwKHBpZF90IGNwcF9waWQsCkBAIC0yMDIsMTEgKzIwMywxNCBAQCBpbnQg
ZGNjX2NvbXBpbGVfcmVtb3RlKGNoYXIgKiphcmd2LAogICAgICAgICAgICAgICAgICAgICAgICBw
aWRfdCBjcHBfcGlkLAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgbG9jYWxfY3B1X2xvY2tf
ZmQsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkY2NfaG9zdGRlZiAqaG9zdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgaW50ICpzdGF0dXMpCisgICAgICAgICAgICAgICAgICAgICAg
IGludCAqc3RhdHVzLAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnRvX25ldF9mZF9wLCBp
bnQgKmZyb21fbmV0X2ZkX3AsIHBpZF90ICpzc2hfcGlkX3ApCiB7Ci0gICAgaW50IHRvX25ldF9m
ZCA9IC0xLCBmcm9tX25ldF9mZCA9IC0xOworLy8gICAgdGFzemx1ayBjb25uZWN0aW9uIGVzdGFi
bGlzaGVkIHVwcGVyCisgICAgaW50IHRvX25ldF9mZCA9ICp0b19uZXRfZmRfcDsKKyAgICBpbnQg
ZnJvbV9uZXRfZmQgPSAqZnJvbV9uZXRfZmRfcDsKKyAgICBwaWRfdCBzc2hfcGlkID0gKnNzaF9w
aWRfcDsKICAgICBpbnQgcmV0OwotICAgIHBpZF90IHNzaF9waWQgPSAwOwogICAgIGludCBzc2hf
c3RhdHVzOwogICAgIG9mZl90IGRvdGlfc2l6ZTsKICAgICBzdHJ1Y3QgdGltZXZhbCBiZWZvcmUs
IGFmdGVyOwpAQCAtMjIzLDggKzIyNyw5IEBAIGludCBkY2NfY29tcGlsZV9yZW1vdGUoY2hhciAq
KmFyZ3YsCiAgICAgICogYmUgb3ZlciBwaXBlcywgd2hpY2ggYXJlIG9uZS13YXkgY29ubmVjdGlv
bnMuICovCiAKICAgICAqc3RhdHVzID0gMDsKLSAgICBpZiAoKHJldCA9IGRjY19yZW1vdGVfY29u
bmVjdChob3N0LCAmdG9fbmV0X2ZkLCAmZnJvbV9uZXRfZmQsICZzc2hfcGlkKSkpCi0gICAgICAg
IGdvdG8gb3V0OworLy90YXN6bHVrLCBtb3ZlIGl0IHRvIGRjY19waWNrX2hvc3RfZnJvbV9saXN0
X2FuZF9sb2NrX2l0CisvLyAgICBpZiAoKHJldCA9IGRjY19yZW1vdGVfY29ubmVjdChob3N0LCAm
dG9fbmV0X2ZkLCAmZnJvbV9uZXRfZmQsICZzc2hfcGlkKSkpCisvLyAgICAgICAgZ290byBvdXQ7
CiAKICNpZmRlZiBIQVZFX0dTU0FQSQogICAgIC8qIFBlcmZvcm0gcmVxdWVzdGVkIHNlY3VyaXR5
LiAqLwpQbGlraSBiaW5hcm5lIGRpc3RjYy0zLjItYXJhbmtpbmUvc3JjLy5zdGF0ZS5oLnN3cCBp
IGRpc3RjYy0zLjJyYzJfbmV3L3NyYy8uc3RhdGUuaC5zd3Agc2nEmSByw7PFvG5pxIUKZGlmZiAt
LWV4Y2x1ZGU9LnN2biAtcnVwTiBkaXN0Y2MtMy4yLWFyYW5raW5lL3NyYy93aGVyZS5jIGRpc3Rj
Yy0zLjJyYzJfbmV3L3NyYy93aGVyZS5jCi0tLSBkaXN0Y2MtMy4yLWFyYW5raW5lL3NyYy93aGVy
ZS5jCTIwMTQtMDktMDQgMTE6NDQ6NDEuMDAwMDAwMDAwICswMjAwCisrKyBkaXN0Y2MtMy4ycmMy
X25ldy9zcmMvd2hlcmUuYwkyMDE0LTEwLTIxIDEzOjM3OjE4LjMzNDU0MzQyOSArMDIwMApAQCAt
NzYsMTUgKzc2LDI0IEBACiAjaW5jbHVkZSAibG9jay5oIgogI2luY2x1ZGUgIndoZXJlLmgiCiAj
aW5jbHVkZSAiZXhpdGNvZGUuaCIKKyNpbmNsdWRlICJjb21waWxlLmgiCiAKIAogc3RhdGljIGlu
dCBkY2NfbG9ja19vbmUoc3RydWN0IGRjY19ob3N0ZGVmICpob3N0bGlzdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCBkY2NfaG9zdGRlZiAqKmJ1aWxkaG9zdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGludCAqY3B1X2xvY2tfZmQpOworICAgICAgICAgICAgICAgICAgICAgICAg
aW50ICpjcHVfbG9ja19mZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCAqdG9fbmV0X2Zk
LAorICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpmcm9tX25ldF9mZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHBpZF90ICpzc2hfcGlkKTsKKworc3RhdGljIGludCBkY2NfcmVtb3RlX2Nv
bm5lY3Qoc3RydWN0IGRjY19ob3N0ZGVmICpob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50ICp0b19uZXRfZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
KmZyb21fbmV0X2ZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlkX3QgKnNzaF9w
aWQpOwogCiAKIGludCBkY2NfcGlja19ob3N0X2Zyb21fbGlzdF9hbmRfbG9ja19pdChzdHJ1Y3Qg
ZGNjX2hvc3RkZWYgKipidWlsZGhvc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
ICpjcHVfbG9ja19mZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmNwdV9sb2Nr
X2ZkLCBpbnQgKnRvX25ldF9mZCwgaW50ICpmcm9tX25ldF9mZCwgcGlkX3QgKnNzaF9waWQpCiB7
CiAgICAgc3RydWN0IGRjY19ob3N0ZGVmICpob3N0bGlzdDsKICAgICBpbnQgcmV0OwpAQCAtMTAx
LDcgKzExMCw3IEBAIGludCBkY2NfcGlja19ob3N0X2Zyb21fbGlzdF9hbmRfbG9ja19pdCgKICAg
ICAgICAgcmV0dXJuIEVYSVRfTk9fSE9TVFM7CiAgICAgfQogCi0gICAgcmV0dXJuIGRjY19sb2Nr
X29uZShob3N0bGlzdCwgYnVpbGRob3N0LCBjcHVfbG9ja19mZCk7CisgICAgcmV0dXJuIGRjY19s
b2NrX29uZShob3N0bGlzdCwgYnVpbGRob3N0LCBjcHVfbG9ja19mZCwgdG9fbmV0X2ZkLCBmcm9t
X25ldF9mZCwgc3NoX3BpZCk7CiAKICAgICAvKiBGSVhNRTogSG9zdCBsaXN0IGlzIGxlYWtlZD8g
Ki8KIH0KQEAgLTE0NSwxMSArMTU0LDE1IEBAIHN0YXRpYyB2b2lkIGRjY19sb2NrX3BhdXNlKHZv
aWQpCiAgKiovCiBzdGF0aWMgaW50IGRjY19sb2NrX29uZShzdHJ1Y3QgZGNjX2hvc3RkZWYgKmhv
c3RsaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRjY19ob3N0ZGVmICoqYnVp
bGRob3N0LAotICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpjcHVfbG9ja19mZCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGludCAqY3B1X2xvY2tfZmQsCisgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgKnRvX25ldF9mZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCAqZnJvbV9u
ZXRfZmQsCisgICAgICAgICAgICAgICAgICAgICAgICBwaWRfdCAqc3NoX3BpZCkKIHsKICAgICBz
dHJ1Y3QgZGNjX2hvc3RkZWYgKmg7CiAgICAgaW50IGlfY3B1OwogICAgIGludCByZXQ7CisgICAg
aW50IGRjY19idXN5OwogCiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgZm9yIChpX2NwdSA9IDA7
IGlfY3B1IDwgNTA7IGlfY3B1KyspIHsKQEAgLTE2MCw5ICsxNzMsMjUgQEAgc3RhdGljIGludCBk
Y2NfbG9ja19vbmUoc3RydWN0IGRjY19ob3N0ZAogICAgICAgICAgICAgICAgIHJldCA9IGRjY19s
b2NrX2hvc3QoImNwdSIsIGgsIGlfY3B1LCAwLCBjcHVfbG9ja19mZCk7CiAKICAgICAgICAgICAg
ICAgICBpZiAocmV0ID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgKmJ1aWxkaG9zdCA9IGg7
Ci0gICAgICAgICAgICAgICAgICAgIGRjY19ub3RlX3N0YXRlX3Nsb3QoaV9jcHUsIHN0cmNtcCho
LT5ob3N0bmFtZSwgImxvY2FsaG9zdCIpID09IDAgPyBEQ0NfTE9DQUwgOiBEQ0NfUkVNT1RFKTsK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgICAgIC8vcnNf
bG9nX3dhcm5pbmcoImxvY2FsIGxvY2sgZG9uZSIpOworICAgICAgICAgICAgICAgICAgICAvL3Rh
c3psdWssIG1ha2UgY29ubmV0aW9uIHdoaWxlIGxvY2FsIGxvY2sKKyAgICAgICAgICAgICAgICAg
ICAgLy9pZiBob3N0IHdpbGwgYmUgYnVzeSwgbGV0J3MgdHJ5IG90aGVyIG9uZQorICAgICAgICAg
ICAgICAgICAgICBpZiAoc3RyY21wKGgtPmhvc3RuYW1lLCAibG9jYWxob3N0IikgPT0gMCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgZGNjX2J1c3k9MDsKKyAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJzX2xvZ19pbmZvKCJsb2NraW5nIHJl
bW90ZSBob3N0ICclcycgIiwgaC0+aG9zdG5hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAg
ZGNjX2J1c3kgPSBkY2NfcmVtb3RlX2Nvbm5lY3QoaCwgdG9fbmV0X2ZkLCBmcm9tX25ldF9mZCwg
c3NoX3BpZCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYg
KGRjY19idXN5ICE9IDAgKSB7CisgICAgICAgICAgICAgICAgICAgICAgIHJzX2xvZ19lcnJvcigi
bG9ja2luZyByZW1vdGUgaG9zdCAnJXMnIGZhaWxlZCB3aXRoIGVycm9yIGNvZGUgJyVkJyIsIGgt
Pmhvc3RuYW1lLCBkY2NfYnVzeSk7CisgICAgICAgICAgICAgICAgICAgICAgIGRjY191bmxvY2so
KmNwdV9sb2NrX2ZkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvL3JzX2xvZ193
YXJuaW5nKCJsb2NraW5nIHJlbW90ZSBob3N0ICclcycgc3VjY2VzcyEiLCBoLT5ob3N0bmFtZSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAqYnVpbGRob3N0ID0gaDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRjY19ub3RlX3N0YXRlX3Nsb3QoaV9jcHUsIHN0cmNtcChoLT5ob3N0bmFtZSwg
ImxvY2FsaG9zdCIpID09IDAgPyBEQ0NfTE9DQUwgOiBEQ0NfUkVNT1RFKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmIChyZXQgPT0gRVhJVF9CVVNZKSB7CiAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0xODYsMTQgKzIxNSw0NSBA
QCBpbnQgZGNjX2xvY2tfbG9jYWwoaW50ICpjcHVfbG9ja19mZCkKIHsKICAgICBzdHJ1Y3QgZGNj
X2hvc3RkZWYgKmNob3NlbjsKIAotICAgIHJldHVybiBkY2NfbG9ja19vbmUoZGNjX2hvc3RkZWZf
bG9jYWwsICZjaG9zZW4sIGNwdV9sb2NrX2ZkKTsKKyAgICByZXR1cm4gZGNjX2xvY2tfb25lKGRj
Y19ob3N0ZGVmX2xvY2FsLCAmY2hvc2VuLCBjcHVfbG9ja19mZCwgTlVMTCwgTlVMTCwgTlVMTCk7
CiB9CiAKIGludCBkY2NfbG9ja19sb2NhbF9jcHAoaW50ICpjcHVfbG9ja19mZCkKIHsKICAgICBp
bnQgcmV0OwogICAgIHN0cnVjdCBkY2NfaG9zdGRlZiAqY2hvc2VuOwotICAgIHJldCA9IGRjY19s
b2NrX29uZShkY2NfaG9zdGRlZl9sb2NhbF9jcHAsICZjaG9zZW4sIGNwdV9sb2NrX2ZkKTsKKyAg
ICByZXQgPSBkY2NfbG9ja19vbmUoZGNjX2hvc3RkZWZfbG9jYWxfY3BwLCAmY2hvc2VuLCBjcHVf
bG9ja19mZCwgTlVMTCwgTlVMTCwgTlVMTCk7CiAgICAgZGNjX25vdGVfc3RhdGUoRENDX1BIQVNF
X0NQUCwgTlVMTCwgY2hvc2VuLT5ob3N0bmFtZSwgRENDX0xPQ0FMKTsKICAgICByZXR1cm4gcmV0
OwogfQorCisvKioKKyAqICAqIE9wZW4gYSBjb25uZWN0aW9uIHVzaW5nIGVpdGhlciBhIFRDUCBz
b2NrZXQgb3IgU1NILiAgUmV0dXJuIGlucHV0CisgKiAgICogYW5kIG91dHB1dCBmaWxlIGRlc2Ny
aXB0b3JzICh3aGljaCBtYXkgb3IgbWF5IG5vdCBiZSBkaWZmZXJlbnQuKQorICogICAgKiovCitz
dGF0aWMgaW50IGRjY19yZW1vdGVfY29ubmVjdChzdHJ1Y3QgZGNjX2hvc3RkZWYgKmhvc3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnRvX25ldF9mZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCAqZnJvbV9uZXRfZmQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwaWRfdCAqc3NoX3BpZCkKK3sKKyAgICBpbnQgcmV0OworCisgICAgaWYgKGhv
c3QtPm1vZGUgPT0gRENDX01PREVfVENQKSB7CisgICAgICAgICpzc2hfcGlkID0gMDsKKyAgICAg
ICAgaWYgKChyZXQgPSBkY2NfY29ubmVjdF9ieV9uYW1lKGhvc3QtPmhvc3RuYW1lLCBob3N0LT5w
b3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9fbmV0X2ZkKSkg
IT0gMCkKKyAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgICAgICpmcm9tX25ldF9mZCA9ICp0
b19uZXRfZmQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0gZWxzZSBpZiAoaG9zdC0+bW9kZSA9
PSBEQ0NfTU9ERV9TU0gpIHsKKyAgICAgICAgaWYgKChyZXQgPSBkY2Nfc3NoX2Nvbm5lY3QoTlVM
TCwgaG9zdC0+dXNlciwgaG9zdC0+aG9zdG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGhvc3QtPnNzaF9jb21tYW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmcm9tX25ldF9mZCwgdG9fbmV0X2ZkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzc2hfcGlkKSkpCisgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9IGVsc2UgeworICAgICAgICByc19sb2dfY3JpdCgiaW1wb3NzaWJsZSBo
b3N0IG1vZGUiKTsKKyAgICAgICAgcmV0dXJuIEVYSVRfRElTVENDX0ZBSUxFRDsKKyAgICB9Cit9
CmRpZmYgLS1leGNsdWRlPS5zdm4gLXJ1cE4gZGlzdGNjLTMuMi1hcmFua2luZS9zcmMvd2hlcmUu
aCBkaXN0Y2MtMy4ycmMyX25ldy9zcmMvd2hlcmUuaAotLS0gZGlzdGNjLTMuMi1hcmFua2luZS9z
cmMvd2hlcmUuaAkyMDE0LTA5LTA0IDExOjQ0OjQxLjAwMDAwMDAwMCArMDIwMAorKysgZGlzdGNj
LTMuMnJjMl9uZXcvc3JjL3doZXJlLmgJMjAxNC0xMC0xNiAxNDowMToxMC44NTgyNjYzMTEgKzAy
MDAKQEAgLTIyLDggKzIyLDggQEAKICAqLwogCiAvKiB3aGVyZS5jICovCi1pbnQgZGNjX3BpY2tf
aG9zdF9mcm9tX2xpc3RfYW5kX2xvY2tfaXQoc3RydWN0IGRjY19ob3N0ZGVmICoqLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqY3B1X2xvY2tfZmQpOworaW50
IGRjY19waWNrX2hvc3RfZnJvbV9saXN0X2FuZF9sb2NrX2l0KHN0cnVjdCBkY2NfaG9zdGRlZiAq
KmJ1aWxkaG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmNwdV9sb2NrX2Zk
LCBpbnQgKnRvX25ldF9mZCwgaW50ICpmcm9tX25ldF9mZCwgcGlkX3QgKnNzaF9waWQpOwogCiBp
bnQgZGNjX2xvY2tfbG9jYWwoaW50ICpjcHVfbG9ja19mZCk7CiAK
--001a113481e4e3f231050626f4ab
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

__
distcc mailing list            http://distcc.samba.org/
To unsubscribe or change options:
https://lists.samba.org/mailman/listinfo/distcc
--001a113481e4e3f231050626f4ab--