)]}'
{
  "commit": "8ff202e2d3fa7ebbd6728fdd230f3ad1a20578cd",
  "tree": "6f8ffd3a083bee4c8c8fa2b4e2eb5981b4af1cbe",
  "parents": [
    "9e47abd862f71847a85f330435c7b3a9b1f76099"
  ],
  "author": {
    "name": "David Lamparter",
    "email": "equinox@opensourcerouting.org",
    "time": "Wed Jul 31 14:39:41 2013 +0200"
  },
  "committer": {
    "name": "David Lamparter",
    "email": "equinox@opensourcerouting.org",
    "time": "Wed Jul 31 14:44:24 2013 +0200"
  },
  "message": "bgpd: write NOTIFY non-blockingly\n\nswitching the socket to blocking may well block the entire bgpd process\nfor some time if our peer is overloaded (which may well be the original\nreason for the NOTIFY)\n\nThe error handling is slightly different from the previous ML discussion\non this;  buffer exhaustion isn\u0027t technically a fatal TCP error, and we\nshould probably proceed with FSM actions according to a sent NOTIFY\n(adjusting timers) even if we didn\u0027t manage to get the NOTIFY onto the\nwire.\n\nAcked-by: Leonid Rosenboim \u003clrosenbo@wrs.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d115353f8ba8ef822ca747374c634e41328aa0c8",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_packet.c",
      "new_id": "d71df0823ffe3254563319e4a5d3405f220afc61",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_packet.c"
    }
  ]
}
