diff options
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) { |