)]}'
{
  "commit": "3e674040edde3196c91e6779e32dd8d7eb79ddf6",
  "tree": "73ce0ada425e52dcbecd143d0ad5d0f5b7e567f4",
  "parents": [
    "bb021598078eeea9efdbee131909f62c169a4d75"
  ],
  "author": {
    "name": "Tormod Volden",
    "email": "debian.tormod@gmail.com",
    "time": "Thu Jan 14 20:59:56 2021 +0100"
  },
  "committer": {
    "name": "Nathan Hjelm",
    "email": "hjelmn@google.com",
    "time": "Thu Jun 10 21:08:22 2021 -0600"
  },
  "message": "darwin_set_interface_altsetting: Avoid device reset on pipe error\n\nIf the device doesn\u0027t support the SET_INTERFACE request (which is\nallowed if there are no alternate interfaces) it should stall the pipe.\nA successful device request would clear all endpoints of the interface.\nWe therefore plaster over the failed request by clearing the endpoints\nand returning success, effectively replacing the missing device request\nsupport.\n\nUp to now this was done by resetting the device, but this would affect\nother interfaces as well. So only clear the endpoints of the selected\ninterface.\n\nOnly do this in the case the request tried setting the already\nselected setting. Otherwise return the pipe error to the caller.\n\nFor any other error than pipe error return with failure.\n\nNote that we need to reclaim the interface after the pipe error.\nThis is maybe papering over a bug in libusb or darwin: The interface\nbecomes inaccessible after the failed SetAlternateInterface() call. The\nreclaim recovers from it, without device side-effects. The need to\nrecover was maybe the reason for the original reset \"hammer\".\n\nCloses #852\n\nSigned-off-by: Tormod Volden \u003cdebian.tormod@gmail.com\u003e\nSigned-off-by: Nathan Hjelm \u003chjelmn@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "de070c63700881c5e83f4925512259b82ffd4cd2",
      "old_mode": 33188,
      "old_path": "libusb/os/darwin_usb.c",
      "new_id": "72023377f98ed47e5d4135eb0798c222c167d7cf",
      "new_mode": 33188,
      "new_path": "libusb/os/darwin_usb.c"
    },
    {
      "type": "modify",
      "old_id": "e0c04dc389c00812cdfed56e1dd0471ab8a2b57a",
      "old_mode": 33188,
      "old_path": "libusb/version_nano.h",
      "new_id": "043064c547663961530b7b8c32e10bdd75ea33b3",
      "new_mode": 33188,
      "new_path": "libusb/version_nano.h"
    }
  ]
}
