diff options
author | Edoardo La Greca | 2025-08-07 19:54:25 +0200 |
---|---|---|
committer | Edoardo La Greca | 2025-08-07 19:54:25 +0200 |
commit | 62db47bb6a6b2dbdff05d03a57c24cdf9e77d16c (patch) | |
tree | 141d7b704396f6b44ae790495f9d0c56be858f56 /src/main/kotlin/Connection.kt | |
parent | 60a9b89d01babe1d261d42a698ea906f4b293b59 (diff) |
change version to use exceptions instead of error strings
Diffstat (limited to 'src/main/kotlin/Connection.kt')
-rw-r--r-- | src/main/kotlin/Connection.kt | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/src/main/kotlin/Connection.kt b/src/main/kotlin/Connection.kt index 48394e0..a0923e8 100644 --- a/src/main/kotlin/Connection.kt +++ b/src/main/kotlin/Connection.kt @@ -72,7 +72,7 @@ class Connection(transLay: TransportLayer) : ProtocolTranslator { return imsg } - override fun version(msize: UInt, version: String): String? { + override fun version(msize: UInt, version: String) { val omsg = OutMessage(NinePMessageType.TVERSION, this.NOTAG, listOf("msize", "version"), mapOf( "msize" to BigInteger(msize.toString()) @@ -84,25 +84,19 @@ class Connection(transLay: TransportLayer) : ProtocolTranslator { this.maxSize ) omsg.write(this.tl) - val imsg: InMessage - try { - imsg = InMessage(this.tl, msize, omsg.tag) - } catch (ime: InvalidMessageException) { - return ime.message - } + val imsg = checkedInMessage(omsg.tag) imsg.applySchema(listOf( InMessage.Field("msize", InMessage.Field.Type.INTEGER, 4u), InMessage.Field("version", InMessage.Field.Type.STRING, 0u) )) val remoteMaxSize = imsg.fieldsInt["msize"]!!.toInt().toUInt() if (remoteMaxSize > this.maxSize) { - return "Invalid remote msize value (too big)." + throw MsizeValueTooBigException(msize, remoteMaxSize) } this.maxSize = remoteMaxSize - if (imsg.fieldsStr["version"] == "unknown") { - return "Unknown version." + if (!imsg.fieldsStr["version"]!!.startsWith("9P2000")) { + throw UnknownVersionException(imsg.fieldsStr["version"]!!) } - return null } override fun auth(afid: UInt, uname: String, aname: String) { |