294 |
out_uint16_le(s, 0); |
out_uint16_le(s, 0); |
295 |
out_uint32_le(s, number_of_formats*36); |
out_uint32_le(s, number_of_formats*36); |
296 |
|
|
297 |
out_uint32_le(s, 0xd); // FIXME: This is a rather bogus unicode text description.. |
// out_uint32_le(s, 0xd); // FIXME: This is a rather bogus unicode text description.. |
298 |
// rdp_out_unistr(s, "", 16); |
// rdp_out_unistr(s, "", 16); |
299 |
|
// out_uint8s(s, 32); |
300 |
|
|
301 |
|
|
302 |
|
out_uint32_le(s, 1); // FIXME: This is a rather bogus text description.. |
303 |
out_uint8s(s, 32); |
out_uint8s(s, 32); |
304 |
|
|
305 |
out_uint32_le(s, 0); |
out_uint32_le(s, 0); |
350 |
|
|
351 |
} |
} |
352 |
|
|
353 |
|
void cliprdr_handle_server_data_request(STREAM s) |
354 |
|
{ |
355 |
|
uint32 remaining_length; |
356 |
|
uint32 wanted_formatcode, pad; |
357 |
|
int ret; |
358 |
|
STREAM out; |
359 |
|
|
360 |
|
in_uint32_le(s, remaining_length); |
361 |
|
in_uint32_le(s, wanted_formatcode); |
362 |
|
in_uint32_le(s, pad); |
363 |
|
|
364 |
|
/* FIXME: Check that we support this formatcode */ |
365 |
|
|
366 |
|
DEBUG_CLIPBOARD(("Request from server for format %d\n", |
367 |
|
wanted_formatcode)); |
368 |
|
|
369 |
|
out = sec_init(encryption ? SEC_ENCRYPT : 0, |
370 |
|
26); |
371 |
|
out_uint32_le(out, 18); |
372 |
|
out_uint32_le(out, 0x13); |
373 |
|
out_uint16_le(out, 5); |
374 |
|
out_uint16_le(out, 1); |
375 |
|
out_uint32_le(out, 6); |
376 |
|
out_uint8p(out, "fnorp", 6); |
377 |
|
out_uint32_le(out, 0); |
378 |
|
|
379 |
|
s_mark_end(out); |
380 |
|
|
381 |
|
sec_send_to_channel(out, encryption ? SEC_ENCRYPT : 0, 1005); // FIXME: Don't hardcode channel! |
382 |
|
|
383 |
|
/* |
384 |
|
if (1 != wanted_formatcode) |
385 |
|
{ |
386 |
|
out = sec_init(encryption ? SEC_ENCRYPT : 0, |
387 |
|
20); |
388 |
|
out_uint32_le(s, 12); |
389 |
|
out_uint32_le(s, 0x13); |
390 |
|
out_uint16_le(s, 5); |
391 |
|
out_uint16_le(s, 2); |
392 |
|
out_uint32_le(s, 0); |
393 |
|
out_uint32_le(s, 0); |
394 |
|
s_mark_end(s); |
395 |
|
sec_send_to_channel(s, encryption ? SEC_ENCRYPT : 0, 1005); // FIXME: Don't hardcode channel! |
396 |
|
} |
397 |
|
*/ |
398 |
|
} |
399 |
|
|
400 |
|
|
401 |
void cliprdr_callback(STREAM s) |
void cliprdr_callback(STREAM s) |
402 |
{ |
{ |
403 |
uint32 length, flags; |
uint32 length, flags; |
436 |
} else if (5 == ptype0 && 1 == ptype1) |
} else if (5 == ptype0 && 1 == ptype1) |
437 |
{ |
{ |
438 |
cliprdr_handle_server_data(length, s); |
cliprdr_handle_server_data(length, s); |
439 |
|
} else if (4 == ptype0 && 0 == ptype1) |
440 |
|
{ |
441 |
|
cliprdr_handle_server_data_request(s); |
442 |
} |
} |
443 |
|
|
444 |
|
|
445 |
} |
} |
446 |
} |
} |