@@ -17,6 +17,7 @@ import io.github.sds100.keymapper.sysbridge.adb.AdbProtocol.A_WRTE
1717import java.io.Closeable
1818import java.io.DataInputStream
1919import java.io.DataOutputStream
20+ import java.io.EOFException
2021import java.net.ConnectException
2122import java.net.Socket
2223import java.net.SocketException
@@ -105,6 +106,9 @@ internal class AdbClient(private val host: String, private val port: Int, privat
105106 return AdbError .SslHandshakeError
106107 } catch (e: SocketException ) {
107108 return AdbError .ConnectionError
109+ } catch (_: EOFException ) {
110+ Timber .e(" AdbClient.connect(): Caught EOF Exception when reading ADB message" )
111+ return AdbError .ConnectionError
108112 }
109113
110114 return Success (Unit )
@@ -114,35 +118,39 @@ internal class AdbClient(private val host: String, private val port: Int, privat
114118 val localId = 1
115119 write(A_OPEN , localId, 0 , " shell:$command " )
116120
117- var message = read()
118- when (message.command) {
119- A_OKAY -> {
120- while (true ) {
121- message = read()
122-
123- val remoteId = message.arg0
124- if (message.command == A_WRTE ) {
125- if (message.data_length > 0 ) {
126- listener(message.data!! )
121+ try {
122+ var message = read()
123+ when (message.command) {
124+ A_OKAY -> {
125+ while (true ) {
126+ message = read()
127+
128+ val remoteId = message.arg0
129+ if (message.command == A_WRTE ) {
130+ if (message.data_length > 0 ) {
131+ listener(message.data!! )
132+ }
133+ write(A_OKAY , localId, remoteId)
134+ } else if (message.command == A_CLSE ) {
135+ write(A_CLSE , localId, remoteId)
136+ break
137+ } else {
138+ error(" not A_WRTE or A_CLSE" )
127139 }
128- write(A_OKAY , localId, remoteId)
129- } else if (message.command == A_CLSE ) {
130- write(A_CLSE , localId, remoteId)
131- break
132- } else {
133- error(" not A_WRTE or A_CLSE" )
134140 }
135141 }
136- }
137142
138- A_CLSE -> {
139- val remoteId = message.arg0
140- write(A_CLSE , localId, remoteId)
141- }
143+ A_CLSE -> {
144+ val remoteId = message.arg0
145+ write(A_CLSE , localId, remoteId)
146+ }
142147
143- else -> {
144- error(" not A_OKAY or A_CLSE" )
148+ else -> {
149+ error(" not A_OKAY or A_CLSE" )
150+ }
145151 }
152+ } catch (_: EOFException ) {
153+ Timber .e(" AdbClient.shellCommand(): Caught EOF Exception when reading ADB message" )
146154 }
147155 }
148156
0 commit comments