{"action":"created","issue":{"url":"https://api.github.com/repos/core-wg/coap-sig/issues/1","repository_url":"https://api.github.com/repos/core-wg/coap-sig","labels_url":"https://api.github.com/repos/core-wg/coap-sig/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/core-wg/coap-sig/issues/1/comments","events_url":"https://api.github.com/repos/core-wg/coap-sig/issues/1/events","html_url":"https://github.com/core-wg/coap-sig/issues/1","id":160958919,"number":1,"title":"Connection Close Reason","user":{"login":"brianraymor","id":3644743,"avatar_url":"https://avatars.githubusercontent.com/u/3644743?v=3","gravatar_id":"","url":"https://api.github.com/users/brianraymor","html_url":"https://github.com/brianraymor","followers_url":"https://api.github.com/users/brianraymor/followers","following_url":"https://api.github.com/users/brianraymor/following{/other_user}","gists_url":"https://api.github.com/users/brianraymor/gists{/gist_id}","starred_url":"https://api.github.com/users/brianraymor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/brianraymor/subscriptions","organizations_url":"https://api.github.com/users/brianraymor/orgs","repos_url":"https://api.github.com/users/brianraymor/repos","events_url":"https://api.github.com/users/brianraymor/events{/privacy}","received_events_url":"https://api.github.com/users/brianraymor/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2016-06-17T19:29:17Z","updated_at":"2016-06-24T17:25:16Z","closed_at":null,"body":"Captured from [Ticket 390](https://trac.tools.ietf.org/wg/core/trac/ticket/390):\r\n\r\nWhen a client or a server has to close a connection (for example, due to an unrecoverable error), there should be a message with the reason.\r\n\r\nReasons might include:\r\n\r\n- A client or server sends a bad message.\r\n  - The Length is less than 2. \r\n  - TKL is greater than 8. \r\n  - The message is shorter than TKL. \r\n  - The message is Empty. \r\n\r\n- The connection timed out. \r\n- The server lacks the system resources to service a new connection. \r\n- The server does not service the connection itself but redirects traffic to another host. \r\n- The server is being shut down and all connections are closed. \r\n- The client or server sends a message in an unsupported version. \r\n\r\nSee also [comment\r\n](https://trac.tools.ietf.org/wg/core/trac/ticket/390#comment:1)"},"comment":{"url":"https://api.github.com/repos/core-wg/coap-sig/issues/comments/228407749","html_url":"https://github.com/core-wg/coap-sig/issues/1#issuecomment-228407749","issue_url":"https://api.github.com/repos/core-wg/coap-sig/issues/1","id":228407749,"user":{"login":"cabo","id":23118,"avatar_url":"https://avatars.githubusercontent.com/u/23118?v=3","gravatar_id":"","url":"https://api.github.com/users/cabo","html_url":"https://github.com/cabo","followers_url":"https://api.github.com/users/cabo/followers","following_url":"https://api.github.com/users/cabo/following{/other_user}","gists_url":"https://api.github.com/users/cabo/gists{/gist_id}","starred_url":"https://api.github.com/users/cabo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cabo/subscriptions","organizations_url":"https://api.github.com/users/cabo/orgs","repos_url":"https://api.github.com/users/cabo/repos","events_url":"https://api.github.com/users/cabo/events{/privacy}","received_events_url":"https://api.github.com/users/cabo/received_events","type":"User","site_admin":false},"created_at":"2016-06-24T17:25:16Z","updated_at":"2016-06-24T17:25:16Z","body":"Retry-After is about a specific request at the request/response layer.  E.g., a server provides a temperature sensor with a certain averaging time.  The server could answer a request after that time with a separate response (but then needs to keep the state).  It could also start the sensor averaging and use Retry-After to indicate when the client should retry the request to get a response.\r\n\r\nHold-Off is about TCP connections.  No request at all involved, so there is no way to give a request response.  The node (and it is not defined whether that is a client or a server) sending the HoldOff just doesn't want to other node to come back with a TCP connection before the time has elapsed.\r\n\r\n(The example also nicely shows off the economy of mechanism inherent in CoAP: Since we already have a uint type, we can just refer to that instead of defining another piece of ABNF.  We don't usually want to communicate in terms of wall clock time, so there also is no need for that alternative.)"}}
{"actor":{"display_login":"cabo"}}