)]}'
{
  "commit": "df13691019be62da728e0c63463fe51bb5d7c29d",
  "tree": "e1e3d1ccbc0cecc0d4a0c071a7d18b8463687d4f",
  "parents": [
    "2b5d6ba0341588e4bbd53d6055118e5472657b49"
  ],
  "author": {
    "name": "David Benjamin",
    "email": "davidben@google.com",
    "time": "Fri Jul 14 17:04:13 2023 -0400"
  },
  "committer": {
    "name": "Boringssl LUCI CQ",
    "email": "boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Wed Jul 19 18:25:13 2023 +0000"
  },
  "message": "Tidy up error handling for sockets vs fds\n\nOn Windows, sockets and fds are different, so we need to be a little\ncarefully. The fd functions (which are really a userspace construct\ninside the libc) report errors by writing to errno:\nhttps://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/read?view\u003dmsvc-170\n\nWhile the socket functions (which are really thin wrappers over Windows\nHANDLEs) use WSAGetLastError:\nhttps://learn.microsoft.com/en-us/windows/win32/api/winsock/nf-winsock-recv\nhttps://learn.microsoft.com/en-us/windows/win32/winsock/error-codes-errno-h-errno-and-wsagetlasterror-2\n\nMoreover, the error values are different, so we shouldn\u0027t mix them\ntogether:\nhttps://learn.microsoft.com/en-us/windows/win32/winsock/windows-sockets-error-codes-2\nhttps://learn.microsoft.com/en-us/cpp/c-runtime-library/errno-constants?view\u003dmsvc-170\n\nFinally, by borrowing OpenSSL\u0027s distinct OPENSSL_NO_SOCK and\nOPENSSL_NO_POSIX_IO options, we arguably should account for all\ncombinations of one or the other being missing. (Ugh.) To account for\nthat, I\u0027ve moved bio_fd_should_retry into its own file that isn\u0027t\nconditioned on anything. It only depends on \u003cerrno.h\u003e, which is part of\nthe C standard library, and used elsewhere already.\n\nChange-Id: I0519d7d68c32062e1220ffca0ab57a9cac9f7e5f\nReviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/61729\nCommit-Queue: David Benjamin \u003cdavidben@google.com\u003e\nReviewed-by: Bob Beck \u003cbbe@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d1cc984784c5c628bd572928796c5b31471cd3a8",
      "old_mode": 33188,
      "old_path": "crypto/CMakeLists.txt",
      "new_id": "f0c892ffb191ec771af99ceb25c66ae6c2b35205",
      "new_mode": 33188,
      "new_path": "crypto/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "cf52ddec2c433eeb228d92a91c93623b3cdc8bd2",
      "old_mode": 33188,
      "old_path": "crypto/bio/connect.c",
      "new_id": "d48d14e91d7a9516e29a37ee7131927c7d2900ae",
      "new_mode": 33188,
      "new_path": "crypto/bio/connect.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "901ea0c4c1efe8bc6b872f8a320071f2027bccd6",
      "new_mode": 33188,
      "new_path": "crypto/bio/errno.c"
    },
    {
      "type": "modify",
      "old_id": "c128e8181d26132d1655d259558e5b5dd132fedf",
      "old_mode": 33188,
      "old_path": "crypto/bio/fd.c",
      "new_id": "3b38db8028c5ddc7b85fb3a51e4887dc35ca902c",
      "new_mode": 33188,
      "new_path": "crypto/bio/fd.c"
    },
    {
      "type": "modify",
      "old_id": "8ed27dae5f694e626c37e35ea3156782346b1f64",
      "old_mode": 33188,
      "old_path": "crypto/bio/internal.h",
      "new_id": "ea2aa6a9932bf82030938dcb96eae8cec8b162ed",
      "new_mode": 33188,
      "new_path": "crypto/bio/internal.h"
    },
    {
      "type": "modify",
      "old_id": "6084e96cfa0f7e11e7e52a3713c1fbd4f3b7bfe4",
      "old_mode": 33188,
      "old_path": "crypto/bio/socket.c",
      "new_id": "72c772f27800bb33cbbae8d74df511494cd31818",
      "new_mode": 33188,
      "new_path": "crypto/bio/socket.c"
    },
    {
      "type": "modify",
      "old_id": "366996c8f9e7dc03e6e345d0910ebe8041a1e7c0",
      "old_mode": 33188,
      "old_path": "crypto/bio/socket_helper.c",
      "new_id": "fd8181fefb485e19edd0cbbb97007ad41d969854",
      "new_mode": 33188,
      "new_path": "crypto/bio/socket_helper.c"
    }
  ]
}
