Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e63d6a08 authored by Myles Watson's avatar Myles Watson Committed by android-build-merger
Browse files

Bluetooth: Sleep instead of dying on EOF

am: 0d63f8af

Change-Id: I8f86685ba2000817dcfbdf566449826b121936dd
parents fc0e8c6f 0d63f8af
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -71,8 +71,10 @@ void H4Protocol::OnDataReady(int fd) {
    ssize_t bytes_read = TEMP_FAILURE_RETRY(read(fd, buffer, 1));
    if (bytes_read != 1) {
      if (bytes_read == 0) {
        LOG_ALWAYS_FATAL("%s: Unexpected EOF reading the packet type!",
                         __func__);
        // This is only expected if the UART got closed when shutting down.
        ALOGE("%s: Unexpected EOF reading the packet type!", __func__);
        sleep(5);  // Expect to be shut down within 5 seconds.
        return;
      } else if (bytes_read < 0) {
        LOG_ALWAYS_FATAL("%s: Read packet type error: %s", __func__,
                         strerror(errno));
+14 −7
Original line number Diff line number Diff line
@@ -56,9 +56,13 @@ void HciPacketizer::OnDataReady(int fd, HciPacketType packet_type) {
      ssize_t bytes_read = TEMP_FAILURE_RETRY(
          read(fd, preamble_ + bytes_read_,
               preamble_size_for_type[packet_type] - bytes_read_));
      if (bytes_read <= 0) {
        LOG_ALWAYS_FATAL_IF((bytes_read == 0),
                            "%s: Unexpected EOF reading the header!", __func__);
      if (bytes_read == 0) {
        // This is only expected if the UART got closed when shutting down.
        ALOGE("%s: Unexpected EOF reading the header!", __func__);
        sleep(5);  // Expect to be shut down within 5 seconds.
        return;
      }
      if (bytes_read < 0) {
        LOG_ALWAYS_FATAL("%s: Read header error: %s", __func__,
                         strerror(errno));
      }
@@ -80,10 +84,13 @@ void HciPacketizer::OnDataReady(int fd, HciPacketType packet_type) {
          fd,
          packet_.data() + preamble_size_for_type[packet_type] + bytes_read_,
          bytes_remaining_));
      if (bytes_read <= 0) {
        LOG_ALWAYS_FATAL_IF((bytes_read == 0),
                            "%s: Unexpected EOF reading the payload!",
                            __func__);
      if (bytes_read == 0) {
        // This is only expected if the UART got closed when shutting down.
        ALOGE("%s: Unexpected EOF reading the payload!", __func__);
        sleep(5);  // Expect to be shut down within 5 seconds.
        return;
      }
      if (bytes_read < 0) {
        LOG_ALWAYS_FATAL("%s: Read payload error: %s", __func__,
                         strerror(errno));
      }