[08:40] wgrant: Does my amendment to https://code.launchpad.net/~cjwatson/launchpad/delay-ppa-publication/+merge/269090 look OK? [08:40] wgrant: Also, want me to do your pending QA? [08:40] cjwatson: Ah, if you could. [08:41] Sorry, been distracted the last couple of days... [08:41] That MP looks better now, thanks. [08:42] OK, thanks. [08:52] wgrant: I seem to get "URL not allowed" surprisingly often [08:52] e.g. http://lies.example.com/ resulted in that [08:52] When I'd have expected "DNS lookup failed" [08:53] Hm. [08:53] I mean, it's not actually breaking AFAICS, just surprising. [08:54] Yeah [08:54] I guess it falls afoul of the IP address restrictions because it has none. [08:56] Ah, could be. [08:56] I'll need to refactor the rules to remove the positive dst assertion, I think. [08:56] http://www.ubuntu.com/ also gave me "URL not allowed" but that's more understandable. [08:56] Which is possible if they get split up, I think. [08:56] Right, that is intended. [08:57] I expected the DNS error to happen before the ACL check, TBH. [08:57] Trying to think of a way to provoke a different error without actually having to bother setting up my own endpoint. [08:58] You can get connection errors by using a host that doesn't listen on HTTPS. [08:58] Or HTTP. [08:58] Oh that's true [08:58] Has to be port 80 [08:58] And HTTPS is dodgy because of httplib, so 80 is better to test. [09:01] wgrant: https://oops.canonical.com/?oopsid=OOPS-86856e3812ab2bada21cf3f23ab8f83b [09:01] Though apparently not a regression. [09:01] Hrmph. [09:01] Did you provoke a timeout? [09:02] It indeed shouldn't OOPS. [09:02] (That's from trying my ADSL, riva.dynamic.greenend.org.uk, which doesn't listen on HTTP but also apparently doesn't actually reject it) [09:02] Ah. [09:02] Right. [09:02] Useful misconfigurations FTW [09:03] Anyway, qa-ok since that's a pre-existing bug [09:03] Shall I file a bug? [09:04] Please do. [09:05] cjwatson: https://code.launchpad.net/~wgrant/launchpad/bug-1489674/+merge/269480 [09:08] wgrant: https://bugs.launchpad.net/launchpad/+bug/1489792 [09:08] Bug #1489792: WebhookClient.deliver crashes if the endpoint times out [09:08] Thanks [09:09] wgrant: Mystifying, why is to_person ever a team there, let alone a private one? [09:09] cjwatson: If the team has an email address. [09:09] Oh, right. [09:09] And we don't need this in BaseMailer too? [09:10] BaseMailer already seems to touch other attributes without rSP [09:10] It does, but I wonder if it has hitherto only been called from scripts [09:10] So I thought it must have done it globally somewhere else. [09:10] That is possible indeed. [09:12] One of these days the word order in ZopelessDatabaseLayer vs. DatabaseFunctionalLayer will stop confusing me. Or I'll crack and rename one of them. [09:12] ZopelessDatabaseLayer needs to be renamed for two reason. [09:12] wgrant: Anyway, r=me but I should check whether any of my BaseMailer conversions are potentially affected. [09:16] I think team-mail for example can go wrong if you renew a team membership and one of the admins of the team is an inaccessible private team. [09:16] Yep [09:16] get_recipients does rSP but BaseMailer doesn't. [09:17] Can you think of any reason not to plaster rSP over all recipient attribute accesses in mailers? [09:18] With BaseMailer, it's always a separate mail to each recipient so there should be no leakage. [09:22] Indeed. [09:22] Ideally you could do it higher. [09:28] Maybe in get_recipients? [09:31] That might not help with eg. the rationale calculation in TeamMembershipMailer. [09:32] Which bit of it? [09:33] It unusually grabbed the displayname directly for something. [09:33] One of the templates had %%(blahblah)s because it was formatting the format stirng. [09:34] forExpiringMembership does admin.unique_displayname, if that's what you're thinking of [09:35] The stuff in TeamRecipientReason is fine because it always refers directly to the member or the team being operated on, rather than other members/admins of the same team; and when performing one of these operations you always have access to both the member and the team at hand. [09:35] team.teamowner is used, but that's constrained to be a public person. [09:36] Eeh. [09:36] Indeed, probably safe. [09:36] It's true that forExpiringMembership would need its own handling as well. [09:37] But it actually needs some special handling no matter what, because it tells you the names of the team's admins. If you're in the bizarre situation of being a member of a team with some admins you aren't allowed to know about, the expiring membership mail shouldn't tell you [09:38] (Is this really a possible setup?) === mup_ is now known as mup