With many apologies to Peter and to the STOX WG for the timing of
this: I still think there's a couple of small problems with the treatment of translation into and out of 503. The first is that we left folks without guidance if they're handling translating a SIP response into an XMPP response in this case - the document's rather silent about that direction in the note in section 6.1. Should they translate a 503 into a <internal-server-error/> as for unknown 5xx-class responses? There's a similar issue with 402 - the pointer to note 1 says <payment-required/> no longer exists, but doesn't give us anything to map a 402 into. is <bad-request/> (the unknown 4xx mapping) ok? The second is a nit with the text in the note in section 6.1. It currently says " the SIP 503 response code will be interpreted as applying to the entire domain, not only the specific user". That's not quite right, and it's important to get this right since we're leaving it mostly to the gateway designer to guess at what to do. The 503 talks about the element that returned it, not anything in the request, so while it's right that it's not only talking about a specific user, it's not right to say it's talking about an entire domain (and while that entire domain would be affected _at this element_, it's more than that - _ANY_ domain's resource routed to this element will not be handled by this element until the condition that led to the 503 goes away). I suggest saying this instead: "the SIP 503 response code will be interpreted as applying to all future requests to this server, not just requests for the specific user". I also whipped up some bad python to look at what round-tripping an errror from XMPP->SIP->XMPP and vice-versa looked like as a sanity check (which brought the 503 and 402 issues in the first item above to my attention). Here's the result. Please look over them and see if any of them are surprising or unacceptable. (They are easier to read in a fixed-width font). I'm particularly suspicious of subscription-required -> registration-required and of 301 -> 410. XMPP -> SIP -> XMPP bad-request -> bad-request conflict -> bad-request feature-not-implemented -> feature-not-implemented forbidden -> policy-violation, forbidden, recipient-unavailable, not-allowed gone -> gone internal-server-error -> internal-server-error item-not-found -> item-not-found, remote-server-not-found jid-malformed -> bad-request not-acceptable -> not-acceptable not-allowed -> policy-violation, forbidden, not-allowed not-authorized -> not-authorized policy-violation -> policy-violation, forbidden, not-allowed recipient-unavailable -> recipient-unavailable redirect -> redirect registration-required -> registration-required remote-server-not-found -> remote-server-timeout, item-not-found, remote-server-not-found remote-server-timeout -> remote-server-timeout, remote-server-not-found resource-constraint -> internal-server-error service-unavailable -> policy-violation, forbidden, feature-not-implemented, not-allowed subscription-required -> registration-required undefined-condition -> bad-request unexpected-request -> bad-request, unexpected-request SIP -> XMPP -> SIP 300 -> 302 301 -> 410 302 -> 302 305 -> 302 380 -> 606, 406 400 -> 400 401 -> 401 402 -> UNDEFINED 403 -> 603, 403 404 -> 408, 604, 404 405 -> 405, 501 406 -> 606, 406 407 -> 407 408 -> 408, 404 410 -> 410 413 -> 403 414 -> 403 415 -> 606, 406 416 -> 606, 406 420 -> 405, 501 421 -> 606, 406 423 -> 500 430 -> 480, 600 439 -> 405, 501 440 -> 403 480 -> 480, 600 481 -> 604, 404 482 -> 606, 406 483 -> 606, 406 484 -> 604, 404 485 -> 604, 404 486 -> 480, 600 487 -> 480, 600 488 -> 606, 406 489 -> 403 491 -> 400, 491 493 -> 400 500 -> 500 501 -> 405, 501 502 -> 408, 404 503 -> UNDEFINED 504 -> 408 505 -> 606, 406 513 -> 403 600 -> 480, 600 603 -> 480, 600 604 -> 604, 404 606 -> 606, 406 RjS |