)]}'
{
  "commit": "1435f956b30b36898178091b951cb6ba8271f5aa",
  "tree": "97beb1794295d52bb063f0e129aed04187c76bfc",
  "parents": [
    "5c4f649c0c2b3462815835d75f7ab82ed4860023"
  ],
  "author": {
    "name": "Roman Arutyunyan",
    "email": "arut@nginx.com",
    "time": "Mon Jun 04 19:50:00 2018 +0300"
  },
  "committer": {
    "name": "Roman Arutyunyan",
    "email": "arut@nginx.com",
    "time": "Mon Jun 04 19:50:00 2018 +0300"
  },
  "message": "Stream: udp streams.\n\nPreviously, only one client packet could be processed in a udp stream session\neven though multiple response packets were supported.  Now multiple packets\ncoming from the same client address and port are delivered to the same stream\nsession.\n\nIf it\u0027s required to maintain a single stream of data, nginx should be\nconfigured in a way that all packets from a client are delivered to the same\nworker.  On Linux and DragonFly BSD the \"reuseport\" parameter should be\nspecified for this.  Other systems do not currently provide appropriate\nmechanisms.  For these systems a single stream of udp packets is only\nguaranteed in single-worker configurations.\n\nThe proxy_response directive now specifies how many packets are expected in\nresponse to a single client packet.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "878c6be19b86ea5a8c21eb51581ddbb3fd9672ce",
      "old_mode": 33188,
      "old_path": "src/core/ngx_connection.c",
      "new_id": "dc6067922890547abf13657c5882a478fcf478bd",
      "new_mode": 33188,
      "new_path": "src/core/ngx_connection.c"
    },
    {
      "type": "modify",
      "old_id": "e4dfe5879ccbdc65b76ce34b83792142b8bc1a75",
      "old_mode": 33188,
      "old_path": "src/core/ngx_connection.h",
      "new_id": "ef0755800570ae0019fda852931b5feb5843645c",
      "new_mode": 33188,
      "new_path": "src/core/ngx_connection.h"
    },
    {
      "type": "modify",
      "old_id": "2069373baaac403552adaed91859553af697ec32",
      "old_mode": 33188,
      "old_path": "src/core/ngx_core.h",
      "new_id": "93ca9174d31cc6f5e3c0f9f4b36e70fc23aab562",
      "new_mode": 33188,
      "new_path": "src/core/ngx_core.h"
    },
    {
      "type": "modify",
      "old_id": "bcc2271f121ae127c3b8f703812e034dfc7292e7",
      "old_mode": 33188,
      "old_path": "src/event/ngx_event.h",
      "new_id": "44f9e05445cf3d123e185c9458f6a7a91bdc5b4f",
      "new_mode": 33188,
      "new_path": "src/event/ngx_event.h"
    },
    {
      "type": "modify",
      "old_id": "962b8e37e93f84ce9b64a39994b50ff0bcb2f256",
      "old_mode": 33188,
      "old_path": "src/event/ngx_event_udp.c",
      "new_id": "8b0ae55394aa89bb5a02a5696bad9de21d437568",
      "new_mode": 33188,
      "new_path": "src/event/ngx_event_udp.c"
    },
    {
      "type": "modify",
      "old_id": "30572cdd99fd1bfaf8cfa69ad36b81736ff5ec9f",
      "old_mode": 33188,
      "old_path": "src/stream/ngx_stream_proxy_module.c",
      "new_id": "792bb77585f2f2dbec0fbdb2aad6155d928fe31e",
      "new_mode": 33188,
      "new_path": "src/stream/ngx_stream_proxy_module.c"
    },
    {
      "type": "modify",
      "old_id": "73947f465c53eb242e21d661bd98adc6945f38ac",
      "old_mode": 33188,
      "old_path": "src/stream/ngx_stream_upstream.h",
      "new_id": "741ef4e0af16b5f16629d9dfa0212f0fdc167da5",
      "new_mode": 33188,
      "new_path": "src/stream/ngx_stream_upstream.h"
    }
  ]
}
