|
@@ -794,14 +794,18 @@ public class Client {
|
|
//for serializing the
|
|
//for serializing the
|
|
//data to be written
|
|
//data to be written
|
|
d = new DataOutputBuffer();
|
|
d = new DataOutputBuffer();
|
|
|
|
+ d.writeInt(0); // placeholder for data length
|
|
RpcPayloadHeader header = new RpcPayloadHeader(
|
|
RpcPayloadHeader header = new RpcPayloadHeader(
|
|
call.rpcKind, RpcPayloadOperation.RPC_FINAL_PAYLOAD, call.id);
|
|
call.rpcKind, RpcPayloadOperation.RPC_FINAL_PAYLOAD, call.id);
|
|
header.write(d);
|
|
header.write(d);
|
|
call.rpcRequest.write(d);
|
|
call.rpcRequest.write(d);
|
|
byte[] data = d.getData();
|
|
byte[] data = d.getData();
|
|
- int dataLength = d.getLength();
|
|
|
|
- out.writeInt(dataLength); //first put the data length
|
|
|
|
- out.write(data, 0, dataLength);//write the data
|
|
|
|
|
|
+ int dataLength = d.getLength() - 4;
|
|
|
|
+ data[0] = (byte)((dataLength >>> 24) & 0xff);
|
|
|
|
+ data[1] = (byte)((dataLength >>> 16) & 0xff);
|
|
|
|
+ data[2] = (byte)((dataLength >>> 8) & 0xff);
|
|
|
|
+ data[3] = (byte)(dataLength & 0xff);
|
|
|
|
+ out.write(data, 0, dataLength + 4);//write the data
|
|
out.flush();
|
|
out.flush();
|
|
}
|
|
}
|
|
} catch(IOException e) {
|
|
} catch(IOException e) {
|