[Standards] BOSH spec questions
bcully at gmail.com
Sun Dec 13 04:45:18 UTC 2015
I’ve been going over the BOSH spec looking for holes in our implementation, and run into some things I can’t quite suss out.
§8, Above example 5:
1) The connection manager MUST also return an HTTP 200 OK response with a <body/> element to the client. Note: This does not indicate that the payloads have been successfully delivered to the application server.
2) If there are no payloads waiting or ready to be delivered within the waiting period, then the connection manager SHOULD include an empty <body/> element in the HTTP result
What’s the difference? If you MUST respond with a <body/> then why is it only SHOULD if there’s nothing to be delivered w/i the waiting period? If you close the connection without a <body/> then according to § 14.3:
3) If the network connection is broken or closed before the client receives a response to a request from the connection manager, then the client MAY resend an exact copy of the original request.
Causing extra transmissions in both directions, because if there’s no response, now the CM SHOULD respond with a recoverable binding condition. Anyway, it’s confusing to me. Perhaps the SHOULD in point 2 ought to be changed to MUST, a la:
If there are no payloads waiting or ready to be delivered within the waiting period, the connection manager MUST return an HTTP 200 OK response with an empty <body/> response.
Are there any non-error conditions where a request will receive no <body/> element as a response?
What are the gaps that acks fill that weren’t already being managed by rid? Specifically, with a hold value of 1, it looks like they accomplish the same thing. I’m just not seeing it, but I’m sure there’s some subtlety I’m missing.
More information about the Standards