rdpsnd_process_ping: include actual packsize value in reply

The rdpsnd_process_ping function did not conform to the MS-RDPEA spec
by leaving out the packsize in the reply. The MS-RDPEA spec is rather
clear that this needs to be the same value as received in the training
request.

I think I'm seeing a slight improvement in audio sync after this
change.
This commit is contained in:
Karl Mikaelsson 2017-10-04 16:02:01 +02:00
parent db8b56db44
commit 8cb6bf4e95

View File

@ -5,6 +5,7 @@
Copyright 2009-2011 Peter Astrand <astrand@cendio.se> for Cendio AB Copyright 2009-2011 Peter Astrand <astrand@cendio.se> for Cendio AB
Copyright (C) Matthew Chapman <matthewc.unsw.edu.au> 2003-2008 Copyright (C) Matthew Chapman <matthewc.unsw.edu.au> 2003-2008
Copyright (C) GuoJunBo <guojunbo@ict.ac.cn> 2003 Copyright (C) GuoJunBo <guojunbo@ict.ac.cn> 2003
Copyright 2017 Karl Mikaelsson <derfian@cendio.se> for Cendio AB
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
@ -258,15 +259,17 @@ static void
rdpsnd_process_ping(STREAM in) rdpsnd_process_ping(STREAM in)
{ {
uint16 tick; uint16 tick;
uint16 packsize;
STREAM out; STREAM out;
in_uint16_le(in, tick); in_uint16_le(in, tick);
in_uint16_le(in, packsize);
logger(Sound, Debug, "rdpsmd_process_ping(), tick = 0x%04x", (unsigned) tick); logger(Sound, Debug, "rdpsmd_process_ping(), tick = 0x%04x", (unsigned) tick);
out = rdpsnd_init_packet(RDPSND_PING | 0x2300, 4); out = rdpsnd_init_packet(RDPSND_PING | 0x2300, 4);
out_uint16_le(out, tick); out_uint16_le(out, tick);
out_uint16_le(out, 0); out_uint16_le(out, packsize);
s_mark_end(out); s_mark_end(out);
rdpsnd_send(out); rdpsnd_send(out);
} }