[RESOLVED] --was: Re: Listening on 2 addresses

Axel Rau <[email protected]> Tue, 2 Apr 2019 10:17:57 +0200
Newsgroups gmane.comp.python.twisted.web
Message-ID <[email protected]>
--===============3687483081159909072==
Content-Type: multipart/alternative;
 boundary="Apple-Mail=_CE822EF7-2EF9-4E3D-85D5-1618C0E63AF6"

--Apple-Mail=_CE822EF7-2EF9-4E3D-85D5-1618C0E63AF6
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=utf-8

Hi Tom,

quoting the IPv6 address resolved the issue!
The error message is far away from being helpful. )-:

Thanks for your patience,
Axel

> Am 02.04.2019 um 05:25 schrieb Tom Most <[email protected]>:
>=20
> Hi Axel,
>=20
> I'm not entirely sure what's going wrong there (maybe quote the ipv6 =
address?), but you want to retain the various independent command-line =
options you should instantiate endpoints directly rather than constructin=
g an endpoint string (the endpoint string is useful to expose directly =
as a CLI parameter).
>=20
> I.e., you can construct SSL4ServerEndpoint <https://twistedmatrix.com/d=
ocuments/current/api/twisted.internet.endpoints.SSL4ServerEndpoint.html> =
directly. Oddly SSL6ServerEndpoint doesn't exist, though, and I don't =
see a generic server wrapper like wrapClientTLS <https://twistedmatrix.co=
m/documents/current/api/twisted.internet.endpoints.html#wrapClientTLS> =
for the server site. I'm afraid I may have led you down the wrong path =
--- I didn't realize this was missing.
>=20
> ---Tom
>=20
> On Sun, Mar 31, 2019, at 8:34 AM, Axel Rau wrote:
>> Hi Tom,
>>=20
>> thanks for the explanation.  After adding some brackets, your example =
code works like a charm.
>>>=20
>>> [1]: https://twistedmatrix.com/documents/current/api/twisted.applicat=
ion.service.MultiService.html <https://twistedmatrix.com/documents/curren=
t/api/twisted.application.service.MultiService.html>
>>> [2]: https://twistedmatrix.com/documents/current/api/twisted.applicat=
ion.internet.StreamServerEndpointService.html <https://twistedmatrix.com/=
documents/current/api/twisted.application.internet.StreamServerEndpointSe=
rvice.html>
>>> [3]: https://twistedmatrix.com/documents/current/api/twisted.internet=
.endpoints.html#serverFromString <https://twistedmatrix.com/documents/cur=
rent/api/twisted.internet.endpoints.html#serverFromString>
>>=20
>>=20
>> Using your pointers, I tried the next step: TLS.
>>=20
>> This variant of the makeService method:
>>=20
>> ipv4_endpoint =3D endpoints.serverFromString(
>> reactor, 'ssl:{}:privateKey=3D{}:certKey=3D{}:interface=3D{}'.format(
>> options['port'],
>> endpoints.quoteStringArgument(options['cert_path']),
>> endpoints.quoteStringArgument(options['key_path']),
>> options['ipv4_address']))
>>=20
>> ipv6_endpoint =3D endpoints.serverFromString(
>> reactor, 'ssl:{}:privateKey=3D{}:certKey=3D{}:interface=3D{}'.format(
>> options['port'],
>> endpoints.quoteStringArgument(options['cert_path']),
>> endpoints.quoteStringArgument(options['key_path']),
>> options['ipv6_address']))
>>=20
>> ipv4 =3D internet.StreamServerEndpointService(ipv4_endpoint, meteo_fac=
tory)
>> ipv6 =3D internet.StreamServerEndpointService(ipv6_endpoint, meteo_fac=
tory)
>>=20
>> root =3D MultiService()
>> ipv4.setServiceParent(root)
>> ipv6.setServiceParent(root)
>>=20
>> does not work. It fails with:
>> _parseSSL() got multiple values for argument =E2=80=9Ainterface'
>> same with private privateKey and certKey.
>>=20
>> What did I wrong this time?
>>=20
>> Thanks, Axel
>> ---
>> PGP-Key:29E99DD6  =E2=98=80  computing @ chaos claudius
>>=20
>> _______________________________________________
>> Twisted-web mailing list
>> [email protected] <mailto:[email protected]>
>> https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web =
<https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web>
>>=20
>=20
> _______________________________________________
> Twisted-web mailing list
> [email protected] <mailto:[email protected]>
> https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web =
<https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web>
=2D--
PGP-Key:29E99DD6  =E2=98=80  computing @ chaos claudius


--Apple-Mail=_CE822EF7-2EF9-4E3D-85D5-1618C0E63AF6
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset=utf-8

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; =
charset=3Dutf-8"></head><body style=3D"word-wrap: break-word; -webkit-nbs=
p-mode: space; line-break: after-white-space;" class=3D"">Hi Tom,<div =
class=3D""><br class=3D""></div><div class=3D"">quoting the IPv6 address =
resolved the issue!</div><div class=3D"">The error message is far away =
from being helpful. )-:</div><div class=3D""><br class=3D""></div><div =
class=3D"">Thanks for your patience,</div><div class=3D"">Axel<br =
class=3D""><div><br class=3D""><blockquote type=3D"cite" class=3D""><div =
class=3D"">Am 02.04.2019 um 05:25 schrieb Tom Most &lt;<a href=3D"mailto:=
[email protected]" class=3D"">[email protected]</a>&gt;:</div><br class=3D"Ap=
ple-interchange-newline"><div class=3D""><div style=3D"caret-color: =
rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: =
normal; font-variant-caps: normal; font-weight: normal; letter-spacing: =
normal; text-align: start; text-indent: 0px; text-transform: none; =
white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; =
text-decoration: none;" class=3D"">Hi Axel,<br class=3D""></div><div =
style=3D"caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: =
12px; font-style: normal; font-variant-caps: normal; font-weight: =
normal; letter-spacing: normal; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; word-spacing: 0px; -webkit-tex=
t-stroke-width: 0px; text-decoration: none;" class=3D""><br class=3D""></=
div><div style=3D"caret-color: rgb(0, 0, 0); font-family: Helvetica; =
font-size: 12px; font-style: normal; font-variant-caps: normal; font-weig=
ht: normal; letter-spacing: normal; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; word-spacing: 0px; -webkit-tex=
t-stroke-width: 0px; text-decoration: none;" class=3D"">I'm not entirely =
sure what's going wrong there (maybe quote the ipv6 address?), but you =
want to retain the various independent command-line options you should =
instantiate endpoints directly rather than constructing an endpoint =
string (the endpoint string is useful to expose<span class=3D"Apple-conve=
rted-space">&nbsp;</span><i class=3D"">directly</i><span class=3D"Apple-c=
onverted-space">&nbsp;</span>as a CLI parameter).<br class=3D""></div><di=
v style=3D"caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: =
12px; font-style: normal; font-variant-caps: normal; font-weight: =
normal; letter-spacing: normal; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; word-spacing: 0px; -webkit-tex=
t-stroke-width: 0px; text-decoration: none;" class=3D""><br class=3D""></=
div><div style=3D"caret-color: rgb(0, 0, 0); font-family: Helvetica; =
font-size: 12px; font-style: normal; font-variant-caps: normal; font-weig=
ht: normal; letter-spacing: normal; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; word-spacing: 0px; -webkit-tex=
t-stroke-width: 0px; text-decoration: none;" class=3D"">I.e., you can =
construct<span class=3D"Apple-converted-space">&nbsp;</span><a href=3D"ht=
tps://twistedmatrix.com/documents/current/api/twisted.internet.endpoints.=
SSL4ServerEndpoint.html" class=3D"">SSL4ServerEndpoint</a><span class=3D"=
Apple-converted-space">&nbsp;</span>directly. Oddly SSL6ServerEndpoint =
doesn't exist, though, and I don't see a generic server wrapper like<span=
 class=3D"Apple-converted-space">&nbsp;</span><a href=3D"https://twistedm=
atrix.com/documents/current/api/twisted.internet.endpoints.html#wrapClien=
tTLS" class=3D"">wrapClientTLS</a><span class=3D"Apple-converted-space">&=
nbsp;</span>for the server site. I'm afraid I may have led you down the =
wrong path --- I didn't realize this was missing.<br class=3D""></div><di=
v style=3D"caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: =
12px; font-style: normal; font-variant-caps: normal; font-weight: =
normal; letter-spacing: normal; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; word-spacing: 0px; -webkit-tex=
t-stroke-width: 0px; text-decoration: none;" class=3D""><br class=3D""></=
div><div style=3D"caret-color: rgb(0, 0, 0); font-family: Helvetica; =
font-size: 12px; font-style: normal; font-variant-caps: normal; font-weig=
ht: normal; letter-spacing: normal; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; word-spacing: 0px; -webkit-tex=
t-stroke-width: 0px; text-decoration: none;" class=3D"">---Tom<br =
class=3D""></div><div style=3D"caret-color: rgb(0, 0, 0); font-family: =
Helvetica; font-size: 12px; font-style: normal; font-variant-caps: =
normal; font-weight: normal; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; word-spacing=
: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=3D""=
><br class=3D""></div><div style=3D"caret-color: rgb(0, 0, 0); font-famil=
y: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: =
normal; font-weight: normal; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; word-spacing=
: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=3D""=
>On Sun, Mar 31, 2019, at 8:34 AM, Axel Rau wrote:<br class=3D""></div><b=
lockquote type=3D"cite" id=3D"fastmail-quoted" style=3D"font-family: =
Helvetica; font-size: 12px; font-style: normal; font-variant-caps: =
normal; font-weight: normal; letter-spacing: normal; orphans: auto; =
text-align: start; text-indent: 0px; text-transform: none; white-space: =
normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; =
-webkit-text-stroke-width: 0px; text-decoration: none;" class=3D""><div =
class=3D"">Hi Tom,<br class=3D""></div><div class=3D""><br class=3D""></d=
iv><div class=3D"">thanks for the explanation. &nbsp;After adding some =
brackets, your example code works like a charm.<br class=3D""></div><div =
class=3D""><blockquote class=3D"fastmail-quoted-" type=3D"cite"><div =
class=3D"fastmail-quoted-"><span class=3D"font" style=3D"font-family: =
Menlo-Regular;"><span class=3D"size" style=3D"font-size: 12px;"></span></=
span><br class=3D""></div><div class=3D"fastmail-quoted-"><div class=3D""=
><span class=3D"font" style=3D"font-family: Menlo-Regular;"><span =
class=3D"size" style=3D"font-size: 12px;">[1]:<span class=3D"fastmail-quo=
ted-Apple-converted-space">&nbsp;</span></span></span><a class=3D"fastmai=
l-quoted-" href=3D"https://twistedmatrix.com/documents/current/api/twiste=
d.application.service.MultiService.html" style=3D"font-family: Menlo-Regu=
lar; font-size: 12px; font-style: normal; font-variant-caps: normal; =
font-weight: normal; letter-spacing: normal; text-align: start; text-inde=
nt: 0px; text-transform: none; white-space: normal; word-spacing: 0px; =
-webkit-text-stroke-width: 0px;">https://twistedmatrix.com/documents/curr=
ent/api/twisted.application.service.MultiService.html</a><br class=3D""><=
/div><div class=3D""><span class=3D"font" style=3D"font-family: Menlo-Reg=
ular;"><span class=3D"size" style=3D"font-size: 12px;">[2]:<span =
class=3D"fastmail-quoted-Apple-converted-space">&nbsp;</span></span></spa=
n><a class=3D"fastmail-quoted-" href=3D"https://twistedmatrix.com/documen=
ts/current/api/twisted.application.internet.StreamServerEndpointService.h=
tml" style=3D"font-family: Menlo-Regular; font-size: 12px; font-style: =
normal; font-variant-caps: normal; font-weight: normal; letter-spacing: =
normal; text-align: start; text-indent: 0px; text-transform: none; =
white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: =
0px;">https://twistedmatrix.com/documents/current/api/twisted.application=
.internet.StreamServerEndpointService.html</a><br class=3D""></div><div =
class=3D""><span class=3D"font" style=3D"font-family: Menlo-Regular;"><sp=
an class=3D"size" style=3D"font-size: 12px;">[3]:<span class=3D"fastmail-=
quoted-Apple-converted-space">&nbsp;</span></span></span><a class=3D"fast=
mail-quoted-" href=3D"https://twistedmatrix.com/documents/current/api/twi=
sted.internet.endpoints.html#serverFromString" style=3D"font-family: =
Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: =
normal; font-weight: normal; letter-spacing: normal; text-align: start; =
text-indent: 0px; text-transform: none; white-space: normal; word-spacing=
: 0px; -webkit-text-stroke-width: 0px;">https://twistedmatrix.com/documen=
ts/current/api/twisted.internet.endpoints.html#serverFromString</a><br =
class=3D""></div></div></blockquote></div><div class=3D"fastmail-quoted-"=
><br class=3D""></div><div class=3D"fastmail-quoted-">Using your =
pointers, I tried the next step: TLS.<br class=3D""></div><div class=3D"f=
astmail-quoted-"><br class=3D""></div><div class=3D"fastmail-quoted-">Thi=
s variant of the makeService method:<br class=3D""></div><div class=3D"fa=
stmail-quoted-"><br class=3D""></div><div class=3D"fastmail-quoted-"><div=
 class=3D"fastmail-quoted-"><span class=3D"fastmail-quoted-Apple-tab-span=
" style=3D"white-space: pre;"></span>ipv4_endpoint =3D endpoints.serverFr=
omString(<br class=3D""></div><div class=3D"fastmail-quoted-"><span =
class=3D"fastmail-quoted-Apple-tab-span" style=3D"white-space: pre;"></sp=
an>reactor, 'ssl:{}:privateKey=3D{}:certKey=3D{}:interface=3D{}'.format(<=
br class=3D""></div><div class=3D"fastmail-quoted-"><span class=3D"fastma=
il-quoted-Apple-tab-span" style=3D"white-space: pre;"></span>options['por=
t'],<br class=3D""></div><div class=3D"fastmail-quoted-"><span class=3D"f=
astmail-quoted-Apple-tab-span" style=3D"white-space: pre;"></span>endpoin=
ts.quoteStringArgument(options['cert_path']),<br class=3D""></div><div =
class=3D"fastmail-quoted-"><span class=3D"fastmail-quoted-Apple-tab-span"=
 style=3D"white-space: pre;"></span>endpoints.quoteStringArgument(options=
['key_path']),<br class=3D""></div><div class=3D"fastmail-quoted-"><span =
class=3D"fastmail-quoted-Apple-tab-span" style=3D"white-space: pre;"></sp=
an>options['ipv4_address']))<br class=3D""></div><div class=3D"fastmail-q=
uoted-"><span class=3D"fastmail-quoted-Apple-tab-span" style=3D"white-spa=
ce: pre;"></span><br class=3D""></div><div class=3D"fastmail-quoted-"><sp=
an class=3D"fastmail-quoted-Apple-tab-span" style=3D"white-space: =
pre;"></span>ipv6_endpoint =3D endpoints.serverFromString(<br class=3D"">=
</div><div class=3D"fastmail-quoted-"><span class=3D"fastmail-quoted-Appl=
e-tab-span" style=3D"white-space: pre;"></span>reactor, 'ssl:{}:privateKe=
y=3D{}:certKey=3D{}:interface=3D{}'.format(<br class=3D""></div><div =
class=3D"fastmail-quoted-"><span class=3D"fastmail-quoted-Apple-tab-span"=
 style=3D"white-space: pre;"></span>options['port'],<br class=3D""></div>=
<div class=3D"fastmail-quoted-"><span class=3D"fastmail-quoted-Apple-tab-=
span" style=3D"white-space: pre;"></span>endpoints.quoteStringArgument(op=
tions['cert_path']),<br class=3D""></div><div class=3D"fastmail-quoted-">=
<span class=3D"fastmail-quoted-Apple-tab-span" style=3D"white-space: =
pre;"></span>endpoints.quoteStringArgument(options['key_path']),<br =
class=3D""></div><div class=3D"fastmail-quoted-"><span class=3D"fastmail-=
quoted-Apple-tab-span" style=3D"white-space: pre;"></span>options['ipv6_a=
ddress']))<br class=3D""></div><div class=3D"fastmail-quoted-"><span =
class=3D"fastmail-quoted-Apple-tab-span" style=3D"white-space: pre;"></sp=
an><br class=3D""></div><div class=3D"fastmail-quoted-"><span class=3D"fa=
stmail-quoted-Apple-tab-span" style=3D"white-space: pre;"></span>ipv4 =
=3D internet.StreamServerEndpointService(ipv4_endpoint, meteo_factory)<br=
 class=3D""></div><div class=3D"fastmail-quoted-"><span class=3D"fastmail=
-quoted-Apple-tab-span" style=3D"white-space: pre;"></span>ipv6 =3D =
internet.StreamServerEndpointService(ipv6_endpoint, meteo_factory)<br =
class=3D""></div><div class=3D"fastmail-quoted-"><span class=3D"fastmail-=
quoted-Apple-tab-span" style=3D"white-space: pre;"></span><br class=3D"">=
</div><div class=3D"fastmail-quoted-"><span class=3D"fastmail-quoted-Appl=
e-tab-span" style=3D"white-space: pre;"></span>root =3D MultiService()<br=
 class=3D""></div><div class=3D"fastmail-quoted-"><span class=3D"fastmail=
-quoted-Apple-tab-span" style=3D"white-space: pre;"></span>ipv4.setServic=
eParent(root)<br class=3D""></div><div class=3D"fastmail-quoted-"><span =
class=3D"fastmail-quoted-Apple-tab-span" style=3D"white-space: pre;"></sp=
an>ipv6.setServiceParent(root)<br class=3D""></div></div><div class=3D"fa=
stmail-quoted-"><br class=3D""></div><div class=3D"fastmail-quoted-">does=
 not work. It fails with:<br class=3D""></div><div class=3D"fastmail-quot=
ed-"><span class=3D"fastmail-quoted-Apple-tab-span" style=3D"white-space:=
 pre;"></span><span class=3D"highlight" style=3D"background-color: =
rgb(255, 255, 255);"><span class=3D"font" style=3D"font-family: Monaco;">=
<span class=3D"size" style=3D"font-size: 11px;">_parseSSL() got multiple =
values for argument&nbsp;=E2=80=9Ainterface'</span></span></span><br =
class=3D""></div><div class=3D"fastmail-quoted-"><span class=3D"highlight=
" style=3D"background-color: rgb(255, 255, 255);"><span class=3D"font" =
style=3D"font-family: Monaco;"><span class=3D"size" style=3D"font-size: =
11px;">same with private</span></span></span>&nbsp;privateKey and =
certKey.<br class=3D""></div><div class=3D"fastmail-quoted-"><br =
class=3D""></div><div class=3D"fastmail-quoted-">What did I wrong this =
time?<br class=3D""></div><div class=3D"fastmail-quoted-"><span class=3D"=
fastmail-quoted-"></span><br class=3D""></div><div class=3D"fastmail-quot=
ed-"><span class=3D"fastmail-quoted-">Thanks, Axel</span><br class=3D""><=
/div><div class=3D"fastmail-quoted-"><span class=3D"fastmail-quoted-">---=
</span><br class=3D""></div><div class=3D"fastmail-quoted-"><div =
class=3D"fastmail-quoted-" style=3D"letter-spacing: normal; text-align: =
start; text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px; overflow-wrap: =
break-word;"><div class=3D"fastmail-quoted-" style=3D"font-family: =
Helvetica; font-style: normal; font-variant-ligatures: normal; font-varia=
nt-position: normal; font-variant-caps: normal; font-variant-numeric: =
normal; font-variant-alternates: normal; font-variant-east-asian: =
normal; font-weight: normal; letter-spacing: normal; line-height: =
normal; text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px; overflow-wrap: =
break-word;"><div class=3D"fastmail-quoted-">PGP-Key:29E99DD6 &nbsp;=E2=98=
=80 &nbsp;computing @ chaos claudius<br class=3D""></div></div></div></di=
v><div class=3D""><br class=3D""></div><div class=3D"">__________________=
_____________________________<br class=3D""></div><div class=3D"">Twisted=
-web mailing list<br class=3D""></div><div class=3D""><a href=3D"mailto:T=
[email protected]" class=3D"">[email protected]</a=
><br class=3D""></div><div class=3D""><a href=3D"https://twistedmatrix.co=
m/cgi-bin/mailman/listinfo/twisted-web" class=3D"">https://twistedmatrix.=
com/cgi-bin/mailman/listinfo/twisted-web</a><br class=3D""></div><div =
class=3D""><br class=3D""></div></blockquote><div style=3D"caret-color: =
rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: =
normal; font-variant-caps: normal; font-weight: normal; letter-spacing: =
normal; text-align: start; text-indent: 0px; text-transform: none; =
white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; =
text-decoration: none;" class=3D""><br class=3D""></div><span style=3D"ca=
ret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; =
font-style: normal; font-variant-caps: normal; font-weight: normal; =
letter-spacing: normal; text-align: start; text-indent: 0px; text-transfo=
rm: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-wid=
th: 0px; text-decoration: none; float: none; display: inline !important;"=
 class=3D"">_______________________________________________</span><br =
style=3D"caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: =
12px; font-style: normal; font-variant-caps: normal; font-weight: =
normal; letter-spacing: normal; text-align: start; text-indent: 0px; =
text-transform: none; white-space: normal; word-spacing: 0px; -webkit-tex=
t-stroke-width: 0px; text-decoration: none;" class=3D""><span style=3D"ca=
ret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; =
font-style: normal; font-variant-caps: normal; font-weight: normal; =
letter-spacing: normal; text-align: start; text-indent: 0px; text-transfo=
rm: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-wid=
th: 0px; text-decoration: none; float: none; display: inline !important;"=
 class=3D"">Twisted-web mailing list</span><br style=3D"caret-color: =
rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: =
normal; font-variant-caps: normal; font-weight: normal; letter-spacing: =
normal; text-align: start; text-indent: 0px; text-transform: none; =
white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; =
text-decoration: none;" class=3D""><a href=3D"mailto:Twisted-web@twistedm=
atrix.com" style=3D"font-family: Helvetica; font-size: 12px; font-style: =
normal; font-variant-caps: normal; font-weight: normal; letter-spacing: =
normal; orphans: auto; text-align: start; text-indent: 0px; text-transfor=
m: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-te=
xt-size-adjust: auto; -webkit-text-stroke-width: 0px;" class=3D"">Twisted=
[email protected]</a><br style=3D"caret-color: rgb(0, 0, 0); =
font-family: Helvetica; font-size: 12px; font-style: normal; font-variant=
-caps: normal; font-weight: normal; letter-spacing: normal; text-align: =
start; text-indent: 0px; text-transform: none; white-space: normal; =
word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: =
none;" class=3D""><a href=3D"https://twistedmatrix.com/cgi-bin/mailman/li=
stinfo/twisted-web" style=3D"font-family: Helvetica; font-size: 12px; =
font-style: normal; font-variant-caps: normal; font-weight: normal; =
letter-spacing: normal; orphans: auto; text-align: start; text-indent: =
0px; text-transform: none; white-space: normal; widows: auto; word-spacin=
g: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" =
class=3D"">https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web=
</a></div></blockquote></div><br class=3D""><div class=3D"">
<div style=3D"color: rgb(0, 0, 0); letter-spacing: normal; orphans: =
auto; text-align: start; text-indent: 0px; text-transform: none; =
white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke=
-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-lin=
e-break: after-white-space;" class=3D""><div style=3D"color: rgb(0, 0, =
0); font-family: Helvetica; font-style: normal; font-variant-ligatures: =
normal; font-variant-position: normal; font-variant-caps: normal; =
font-variant-numeric: normal; font-variant-alternates: normal; font-varia=
nt-east-asian: normal; font-weight: normal; letter-spacing: normal; =
line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: =
0px; text-transform: none; white-space: normal; widows: 2; word-spacing: =
0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-=
mode: space; -webkit-line-break: after-white-space;" class=3D""><div =
class=3D"">---<br class=3D"">PGP-Key:29E99DD6 &nbsp;=E2=98=80 &nbsp;compu=
ting @ chaos claudius</div></div></div>
</div>
<br class=3D""></div></body></html>

--Apple-Mail=_CE822EF7-2EF9-4E3D-85D5-1618C0E63AF6--

--===============3687483081159909072==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KVHdpc3RlZC13
ZWIgbWFpbGluZyBsaXN0ClR3aXN0ZWQtd2ViQHR3aXN0ZWRtYXRyaXguY29tCmh0dHBzOi8vdHdp
c3RlZG1hdHJpeC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3R3aXN0ZWQtd2ViCg==

--===============3687483081159909072==--