Keep Vsock server running, better error responses

This commit is contained in:
Raymond Sebetoa 2024-08-26 03:40:26 +02:00
parent ea983cf990
commit f985f31c0a

View File

@ -27,7 +27,7 @@ class VsockServer(private val cid: Int, private val port: Int, httpBindPort: Int
fun start() { fun start() {
server = ServerVSock() server = ServerVSock()
try { try {
server?.bind(VSockAddress(cid, port)) //For any CID use VSockAddress.VMADDR_CID_ANY server?.bind(VSockAddress(VSockAddress.VMADDR_CID_ANY, port)) //For any CID use VSockAddress.VMADDR_CID_ANY
logger.info { "Vsock Bound on Cid: ${server?.localCid}" } logger.info { "Vsock Bound on Cid: ${server?.localCid}" }
server?.accept()?.use { peerVSock -> server?.accept()?.use { peerVSock ->
@ -43,7 +43,8 @@ class VsockServer(private val cid: Int, private val port: Int, httpBindPort: Int
Json.decodeFromString<VsockApiRequest>(receivedData) Json.decodeFromString<VsockApiRequest>(receivedData)
} catch (e: Exception) { } catch (e: Exception) {
logger.error { "Failed to parse JSON: ${e.message}" } logger.error { "Failed to parse JSON: ${e.message}" }
peerVSock.outputStream?.write("Invalid JSON format".toByteArray(StandardCharsets.UTF_8)) val errorMessage = "{\"error\":\"Invalid JSON format\", \"received\":\"${receivedData}\"}"
peerVSock.outputStream?.write(errorMessage.toByteArray(StandardCharsets.UTF_8))
return return
} }
@ -57,9 +58,10 @@ class VsockServer(private val cid: Int, private val port: Int, httpBindPort: Int
} }
} catch (ex: IOException) { } catch (ex: IOException) {
logger.error { "Error starting Vsock: ${ex.message}" } logger.error { "Error starting Vsock: ${ex.message}" }
} finally {
stop()
} }
/*finally { // We have to keep the server running
stop()
}*/
} }
private suspend fun handleApiCall(request: VsockApiRequest): String { private suspend fun handleApiCall(request: VsockApiRequest): String {