Add an unlimited string length for server chat packet

This commit is contained in:
roblabla 2013-08-05 13:14:12 +02:00 committed by Xabier de Zuazo
parent 5c8f29bdff
commit 6a530522a6

View File

@ -2,6 +2,7 @@ var assert = require('assert');
var util = require('util'); var util = require('util');
var STRING_MAX_LENGTH = 240; var STRING_MAX_LENGTH = 240;
var SRV_STRING_MAX_LENGTH = 32767;
var packets = { var packets = {
0x00: [ 0x00: [
@ -22,9 +23,14 @@ var packets = {
{ name: "serverHost", type: "string" }, { name: "serverHost", type: "string" },
{ name: "serverPort", type: "int" } { name: "serverPort", type: "int" }
], ],
0x03: [ 0x03: {
{ name: "message", type: "string" } toServer: [
], { name: "message", type: "string" }
],
toClient: [
{ name: "message", type: "ustring" }
]
},
0x04: [ 0x04: [
{ name: "age", type: "long" }, { name: "age", type: "long" },
{ name: "time", type: "long" } { name: "time", type: "long" }
@ -517,6 +523,7 @@ var types = {
'byte': [readByte, writeByte, 1], 'byte': [readByte, writeByte, 1],
'ubyte': [readUByte, writeUByte, 1], 'ubyte': [readUByte, writeUByte, 1],
'string': [readString, writeString, sizeOfString], 'string': [readString, writeString, sizeOfString],
'ustring': [readString, writeString, sizeOfUString],
'byteArray16': [readByteArray16, writeByteArray16, sizeOfByteArray16], 'byteArray16': [readByteArray16, writeByteArray16, sizeOfByteArray16],
'bool': [readBool, writeBool, 1], 'bool': [readBool, writeBool, 1],
'double': [readDouble, writeDouble, 8], 'double': [readDouble, writeDouble, 8],
@ -1270,6 +1277,11 @@ function sizeOfString(value) {
return 2 + 2 * value.length; return 2 + 2 * value.length;
} }
function sizeOfUString(value) {
assert.ok(value.length < SRV_STRING_MAX_LENGTH, "string greater than max length");
return 2 + 2 * value.length;
}
function writeString(value, buffer, offset) { function writeString(value, buffer, offset) {
buffer.writeInt16BE(value.length, offset); buffer.writeInt16BE(value.length, offset);
offset += 2; offset += 2;