Open Letter to Calendar Developers about HTTP
lists.w3.org
lists.w3.org
[1] http://pages.cs.wisc.edu/~plonka/netgear-sntp/
[2] http://web.archive.org/web/20060408150213/http://people.free...
And then they handle a 410 the same as a 404, even though a 410 has very little chance of being transient. It's just rare enough that they don't even realize they don't support it properly.
Actually, a bunch of them probably don't even check for response code.
Edit: If dataaccessd is really the iOS native CALDAV integration, that's a bit annoying. Of all people, they should be able to handle that correctly.
if(200) { // Do stuff } else { // Try again later }
That's like an "idiot-filter" interview question. "Is the following code valid?"Then "where do you draw the line?". Sometimes if(200){}else{} is plenty.
if(200){...}else{retry} is never plenty.
What else would you do then? These are not crazy expectations. Exponential backoff might be reasonable, but I'd argue that's part of "else{retry}" since it's inherently retrying.
Sure they are. Choosing to communicate over HTTP means allowing for the presence of proxies between "your" client and "your" server. In HTTP, you don't control the whole path, even if you control both sides.
VPNs can also exist, but they sometimes send custom error status codes[1]. How do you handle those? Retry if `code % 3 == 1`? Will your program even be informed if the VPN connection is restored, or will you have to just blindly retry until it works?
[1]: http://compnetworking.about.com/od/vpnsetup/tp/common-vpn-er...
[1]: It just struck me as one of those "low bar" technical interview questions.
// ==== Section 1: Code ==== {{{
BLAH
// ========================= }}}
Granted, since this is Vim-specific, you usually only see it used in Vim plugins, because you're unlikely to have someone editing with another editor.Or write nasty blog posts about you that pollute Google results forever.
EDIT: http://notlate.co.uk/
EDIT2: Not that it's enough load to be noticeable, but it's a little wasteful on the part of dataaccessd IMO.
[1] https://news.ycombinator.com/item?id=6268919
Side note: it's sad to see that Apple is a huge perpetrator in this one. I hope they fix that bug.
There's a pretty obvious incentive to ignore it: it takes developer time to implement, and the result of the 'feature' is that your customer may get permanently locked out of a net resource. What happens if a website admin accidentally puts up a 410, or - worse yet - if a previous owner of the domain once put up a 410 for a page with the same URI.
I suppose there's an RFC for the code somewhere, but it seems like a bad idea. I pity the tech support agent who has to explain why his/her customer's browser refuses to visit foo.com/bar when everyone else can view it and there's no longer any way of knowing that once, for an afternoon in 1997 the page threw a 410!
Amusingly, I asked around within the company to try to find who was responsible for the crawler repeatedly fetching the 404 but ultimately couldn't figure it out. (It seemed like the decommissioned service had maybe registered the URL with some still-running automated refetching service?) It eventually stopped on its own.
Using incremental backoff for 410, in particular, is to miss the point entirely. 410 very explicitly means that you should not try again. The fact that it's so rare only lowers the chance that it's being used incorrectly: someone savvy enough to set up a 410 knows enough to mean it.
That said, I'm starting to think that if you're going to implement 410 on your site, you should also start logging activity. When a host keeps looking, either incrementally or otherwise, start refusing connections from that host at the firewall level. A program that sets 4xx-class errors to fail silently probably isn't doing anything about refused connections, so an IP-ban should wake the developers up. Even if it doesn't, you won't have erroneous requests clogging your server logs, so you still benefit.
I don't see how your conclusion follows from your premise. I fairly often come across cases where obscure options are mainly used by those who don't understand them, and in the absence of data I wouldn't assume that the same couldn't be the case for HTTP responses.
Exponential backoff is a quite reasonable compromise for those kind of situations.
That's the problem with writing specs that include all sorts of "useful" codes. Like SIP's 6xx "globally unavailable", as if a client is going to trust that some server knows the exact state of the known universe.