[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 <<a href=3D"mailto:= [email protected]" class=3D"">[email protected]</a>>:</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"> </span><i class=3D"">directly</i><span class=3D"Apple-c= onverted-space"> </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"> </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"> </span>directly. Oddly SSL6ServerEndpoint = doesn't exist, though, and I don't see a generic server wrapper like<span= class=3D"Apple-converted-space"> </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. 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"> </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"> </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"> </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 =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> 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 =E2=98= =80 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 =E2=98=80 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==--