Giter Club home page Giter Club logo

freerdp-old's Introduction

FreeRDP: A Remote Desktop Protocol Implementation

FreeRDP is a free implementation of the Remote Desktop Protocol (RDP), released under the Apache license. Enjoy the freedom of using your software wherever you want, the way you want it, in a world where interoperability can finally liberate your computing experience.

Code Quality Status

abi-checker clang-tidy-review CodeQL mingw-builder [arm,ppc,ricsv] architecture builds coverity

Resources

Project website: https://www.freerdp.com/
Issue tracker: https://github.com/FreeRDP/FreeRDP/issues
Sources: https://github.com/FreeRDP/FreeRDP/
Downloads: https://pub.freerdp.com/releases/
Wiki: https://github.com/FreeRDP/FreeRDP/wiki
API documentation: https://pub.freerdp.com/api/

Security policy: https://github.com/FreeRDP/FreeRDP/security/policy

Matrix room : #FreeRDP:matrix.org (main) XMPP channel: #FreeRDP#[email protected] (bridged) IRC channel : #freerdp @ irc.oftc.net (bridged) Mailing list: https://lists.sourceforge.net/lists/listinfo/freerdp-devel

Microsoft Open Specifications

Information regarding the Microsoft Open Specifications can be found at: https://www.microsoft.com/openspecifications/

A list of reference documentation is maintained here: https://github.com/FreeRDP/FreeRDP/wiki/Reference-Documentation

Compilation

Instructions on how to get started compiling FreeRDP can be found on the wiki: https://github.com/FreeRDP/FreeRDP/wiki/Compilation

freerdp-old's People

Contributors

absmall avatar awakecoding avatar floppym avatar g-reno avatar howard0su avatar jsorg71 avatar kiilerix avatar ngraziano avatar niklasb avatar nils-a avatar otavio avatar serisman avatar tenchman avatar unquietwiki avatar ynezz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

freerdp-old's Issues

Compilation problem

Hi !

I had to cope with some unchecked dependencies when I built freerdp, configure script missed missing :

  • Xv.h (in package x11proto-video-dev), and
  • Xvlib.h (in package libxv-dev)

which are required to build. After adding the missing packages on my system (debian-testing) it ran fine.

MPO

Keyboard input not working under OSX

Git show:

commit a0a25a61d89018c3ca7d551f36f33d45b90249d5
Merge: e84e383 526c557

Some issues found while testing on OSX 10.7.2 with latest GIT source. (Same issues observed last month, but not reported). No errors seen when compiling. Connecting to the same host from linux works well.

Setup: Running windows as a virtual guest system under virtualhost on linux (Ubuntu) server. Unfortunately no native windows host to test on. (If someone has a test setup I can access, I'm happy to give it a shot)

-Connecting to the guest-instance works well, but session does not accept any keyboard input. Mouse input works fine. MS remote desktop for mac works well.

Helges-MacBook-Air:X11 helge$ ./xfreerdp -u helge 192.168.1.90
Warning xf_GetWindowProperty (104): Property 294 does not exist
connected to 192.168.1.90:3389
Password:

cmake output:

Helges-MacBook-Air:FreeRDP helge$ cmake -DCMAKE_BUILD_TYPE=Debug -DWITH_SSE2=ON .
-- FreeRDP GIT
-- Skipping optional package PulseAudio.
-- Enable this using "-DWITH_PULSEAUDIO=ON".
-- Skipping optional package PCSC.
-- Enable this using "-DWITH_PCSC=ON".
-- Finding suggested package Cups.
-- Disable this using "-DWITH_CUPS=OFF".
-- Found Cups: /usr/lib/libcups.dylib
-- Finding suggested package FFmpeg.
-- Disable this using "-DWITH_FFMPEG=OFF".
-- checking for modules 'libavcodec;libavutil'
-- package 'libavcodec' not found
-- package 'libavutil' not found
-- Skipping optional package CUnit.
-- Enable this using "-DWITH_CUNIT=ON".
-- Finding suggested package X11.
-- Disable this using "-DWITH_X11=OFF".
-- Finding suggested package XKBFile.
-- Disable this using "-DWITH_XKBFILE=OFF".
-- Finding suggested package X11.
-- Disable this using "-DWITH_X11=OFF".
CMake Warning at client/X11/CMakeLists.txt:56 (message):
WITH_MANPAGES was set, but xmlto was not found. man-pages will not be
installed

-- Finding suggested package Xinerama.
-- Disable this using "-DWITH_XINERAMA=OFF".
-- Finding suggested package Xext.
-- Disable this using "-DWITH_XEXT=OFF".
-- Finding suggested package Xcursor.
-- Disable this using "-DWITH_XCURSOR=OFF".
-- Finding suggested package Xv.
-- Disable this using "-DWITH_XV=OFF".
-- Skipping optional package DirectFB.
-- Enable this using "-DWITH_DIRECTFB=ON".
-- Finding suggested package X11.
-- Disable this using "-DWITH_X11=OFF".
-- Finding suggested package Xext.
-- Disable this using "-DWITH_XEXT=OFF".
-- Finding suggested package Xdamage.
-- Disable this using "-DWITH_XDAMAGE=OFF".
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/helge/FreeRDP
Helges-MacBook-Air:FreeRDP helge$

Copy Paste not working

Hi,

i could not longer copy/paste text from the client to the FreeRDP destination.
The Last Exe who did this for me was Build 23.02.2021 02:46.
Exes after that Date do not.

my start cmd...
wfreerdp.exe /v:TARGET /f /smart-sizing /u:[email protected] +clipboard +floatbar

Greetings and Thanks
Rainer

"freerdp_uniconv_out" error dealing with multi-byte characters under Windows

freerdp Version: v0.8.2-515-gc1f0fe0
OS: Windows Xp SP3 ( Chinese )
Symptoms: When connecting to a RDP Server from Windows( Chinese version), the wfreerdp process collapsed .
Analysis: When parameter str is multi-byte characters (for example, Chinese,Kerean, Japanese), the function *** freerdp_uniconv_out *** (libfreerdputils,unicode.c) deals in a wrong way.

The easiest way to solve the problem is to use the Windows API in the Windows environment:

#if ( defined(WINDOWS) || defined(_WIN32)   ||defined(_WINDOWS) )
    #include  <windows.h>
#endif

/* Convert str from DEFAULT_CODEPAGE to WINDOWS_CODEPAGE and return buffer like xstrdup.
 * Buffer is 0-terminated but that is not included in the returned length. */

char* freerdp_uniconv_out(UNICONV *uniconv, char *str, size_t *pout_len)
{
    size_t ibl = strlen(str), obl ; /* FIXME: worst case */
    char *pin = str,  *pout0 ;

#if ( defined(WINDOWS) || defined(_WIN32)   ||defined(_WINDOWS) )

    obl = MultiByteToWideChar (CP_ACP, 0, pin, -1, NULL, 0); 
    pout0 = xmalloc(obl*2 );
    MultiByteToWideChar (CP_ACP, 0, pin, -1, (wchar_t*)pout0, obl);
    pout0[obl*2-1]=0;
    pout0[obl*2-2]=0;
    *pout_len=obl*2-2;
#else

    char *pout;

    obl = 2 * ibl;
    pout0 = xmalloc(obl + 2);
    pout = pout0;

#ifdef HAVE_ICONV
    if (iconv(uniconv->out_iconv_h, (ICONV_CONST char **) &pin, &ibl, &pout, &obl) == (size_t) - 1)
    {
        printf("freerdp_uniconv_out: iconv() error\n");
        return NULL;
    }
#else
    while ((ibl > 0) && (obl > 0))
    {
        if ((signed char)(*pin) < 0)
        {
            return NULL;
        }
        *pout++ = *pin++;
        *pout++ = 0;
        ibl--;
        obl -= 2;
    }
#endif

    if (ibl > 0)
    {
        printf("freerdp_uniconv_out: string not fully converted - %d chars left\n", (int) ibl);
    }

    *pout_len = pout - pout0;
    *pout++ = 0;    /* Add extra double zero termination */
    *pout = 0;

#endif

    return pout0;
}

Unable to connect to Virtualbox RDP server

commit a0a25a61d89018c3ca7d551f36f33d45b90249d5

Virtualbox implements its own RDP server displaying its guest OS. FreeRDP does not work with this server. MS Remote Desktop client (for mac) works fine.

Show connected, but never displays:

Helges-MacBook-Air:X11 helge$ ./xfreerdp 192.168.1.150
Warning xf_GetWindowProperty (104): Property 294 does not exist
connected to 192.168.1.150:3389

Unknown keycodes 129 (numeric '.') and 97 ('?' or '/')

I've got the following output for such ordinary keys:

xf_kb_send_key: unknown key down keycode=97 (X keysym=0x002F)
xf_kb_send_key: unknown key up keycode=97 (X keysym=0x002F)
xf_kb_send_key: unknown key down keycode=129 (X keysym=0xFFAE)
xf_kb_send_key: unknown key up keycode=129 (X keysym=0xFFAE)

This is the keyboard layout ID: -k 0x00010416, which I got from: 0x00010416 Portuguese (Brazilian ABNT2)
Setting the ID or not, the result is the same though

dead code fragments

There are a lot of dead code fragments all over the source only visible if compiled with '-Wunused-but-set-variable'. I'm not really sure whether it is only dead code or in some cases hidden bugs.

support for compose key

In rdesktop it was possible to use the compose key to write international characters ... this features was enabled using to enable_compose command in the keymap ... it would be great if similar functionality was available in freerdp as this provides consistent user experiance between working locally and within the rdp session.

make dist fails

Due the refactoring done currently make dist fails completely.

DirectFB: Improve performance of event handling

I noticed that the event handling is setup as a running loop in freerdp.

That works fine for workstations and PC's that have unlimited power sources.

But for laptops and embedded devices running loops can be battery killers.

Maybe we could explore some type of wait_event mechanism for event handling.

I stuck in a DEBUG statement to see what was going on and I could see that the loop was going round n' round all the time even though my hands were off the keyboard and mouse and there was nothing happening on the server.

    0000 1a 00 17 00 ec 03 ea 03 01 00 00 01 0c 00 27 00 ..............'.
    0010 00 00 00 00 00 00 03 00 32 00                   ........2.
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG process_new_pointer_pdu (1062):
    DBG process_color_pointer_common (1001): cursor = -1409016256

    DBG cache_put_cursor (353):
    DBG run_dfbfreerdp (568): start of loop
    DBG process_cached_pointer_pdu (1024):
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG process_new_pointer_pdu (1062):
    DBG process_color_pointer_common (1001): cursor = -1409026032

    DBG cache_put_cursor (353):
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop
    DBG run_dfbfreerdp (568): start of loop

DirectFB UI: incorrect cursor tracking behavior

I'm using the DirectFB version of freerdp.

Here are my rpms:
directfb-1.2.9-2.fc11.x86_64
tigervnc-0.0.90-0.10.fc11.x86_64

I'm having a problem with the cursor tracking.

When I start dfbfreerdp it starts on port 5900 and waits for a connection.

So I connect using vncviewer :0 and I can see the desktop login screen.

The problem I'm having is that the mouse pointer does not track the
mouse movement properly.

The pointer only moves with X-axis motion.

Here is what the pointer track looks like as you move the mouse back and
forth:

----------------------------------------------
|x                                           |
|  x                                         |
|    x                                       |
|      x                                     |
|        x                                   |
|          x                                 |
|            x                               |
|              x                             |
|                x                           |
|                  x                         |
|                    xxxxxxxxxxxxxxxxxxxxxxxx|
----------------------------------------------

I've tried every mouse protocol setting in ~/.directfbrc and they all
follow this pattern.

I did some debugging and the cursor values that are being set by
GetCursorPosition are those of the track diagram which of course are wrong.

Ultimately the DirectFB GetCursorPosition gets down to this code:

 653 DFBResult
 654 dfb_windowstack_get_cursor_position( CoreWindowStack *stack,
int *ret_x, int *ret_y )
 655 {
 656      D_DEBUG_AT( Core_WindowStack, "%s( %p, %p, %p )\n",
__FUNCTION__, stack, ret_x, ret_y );
 657
 658      D_MAGIC_ASSERT( stack, CoreWindowStack );
 659      D_ASSUME( ret_x != NULL || ret_y != NULL );
 660
 661      /* Lock the window stack. */
 662      if (dfb_windowstack_lock( stack ))
 663           return DFB_FUSION;
 664
 665      if (ret_x)
 666           *ret_x = stack->cursor.x;
 667
 668      if (ret_y)
 669           *ret_y = stack->cursor.y;
 670
 671      /* Unlock the window stack. */
 672      dfb_windowstack_unlock( stack );
 673
 674      return DFB_OK;
 675 }

And this is the only commit (2006) that I see involving cursor handling:

http://git.directfb.org/?p=core/DirectFB.git;a=commit;h=10c3e898329f470e7c35e05783bab5f335514c3b

Difference in color palette (256 colors) between FreeRDP (Windows) and native rdp client

Hi everyone,
I'm currently developing the new Remote Desktop Client for ReactOS ( http://www.reactos.org ).
That means I'm using the FreeRDP Windows version.
I'm connecting from Windows 7 to a Windows 2000 Server for this example. (means 8 bit, 256 colors)
I've noticed a color difference between FreeRDP (git version 2011-05-02) and the native mstsc.
This image shows the difference (left freerdp, right mstsc - look at the mspaint color palette at the bottom):
http://www.thomasbrandt.net/ReactOS/FreeRDP/Freerdp_palette_problem.png

That's all.
Keep up the good work.
(Please don't neglect xrdp too much, ReactOS will need it some day :) )

Audio input segfault

While testing audio input plugin, on an embedded system, we got a segfault when we close the open device. In case you open the audio recorder and close it after using it, it segfaults.

NLA Unicode Support

Network Level Authentication, unlike the older authentication mechanism, has an extra challenge when it comes to unicode support: the username and passwords must be uppercased in unicode. Even though the current development sources will correctly use iconv for the unicode conversion, there is no mechanism to properly uppercase unicode characters. Since this is required in order to compute the correct NTLMv2 response, authentication fails.

In order to complete NLA unicode support, proper unicode uppercasing must be implemented, and that is definitely not as trivial as doing US ASCII uppercasing.

rdpsnd: pulseaudio keeps closing and opening after desktop activity

My Linux box uses pulseaudio.

I'm using a git pull about 2 weeks.

When I try to connect xfreerdp to Windows XP and redirect sound back
using pulseaudio the stream keeps dropping after I interact with the
desktop such as moving windows around.

Starts out fine:

rdpsnd_pulse_format_supported: ok
rdpsnd_pulse_set_format: wFormatTag=17 nChannels=2
nSamplesPerSec=22050 wBitsPerSample=4 nBlockAlign=1024
rdpsnd_pulse_open: connected
rdpsnd_pulse_set_volume: ffffffff
rdpsnd_pulse_set_volume: ffffffff

IN DEBUG MODE:
DBG sec_send_to_channel (334): Sending encrypted packet:
0000 08 00 00 00 03 00 00 00 05 00 04 00 fb 87 1b 00 ................
rdpsnd_pulse_set_format: wFormatTag=17 nChannels=1
nSamplesPerSec=22050 wBitsPerSample=4 nBlockAlign=512
rdpsnd_pulse_open: connected
DBG sec_send_to_channel (334): Sending encrypted packet:
0000 08 00 00 00 03 00 00 00 05 00 04 00 fb 87 1c 00 ................
DBG sec_send_to_channel (334): Sending encrypted packet:
0000 08 00 00 00 03 00 00 00 05 00 04 00 83 a7 3a 00 ..............:.
DBG sec_send_to_channel (334): Sending encrypted packet:
0000 08 00 00 00 03 00 00 00 05 00 04 00 f7 ad 3b 00 ..............;.
DBG sec_send_to_channel (334): Sending encrypted packet:
0000 08 00 00 00 03 00 00 00 05 00 04 00 f7 ad 3c 00 ..............<.
rdpsnd_pulse_set_format: wFormatTag=6 nChannels=1
nSamplesPerSec=11025 wBitsPerSample=8 nBlockAlign=1
rdpsnd_pulse_open: connected
DBG sec_send_to_channel (334): Sending encrypted packet:
0000 08 00 00 00 03 00 00 00 05 00 04 00 fb ae 3d 00 ..............=.

Then after moving some windows, I get dropouts and every few seconds I
see this:

rdpsnd_pulse_set_volume: ffffffff
rdpsnd_pulse_close:
rdpsnd_pulse_open: connected
rdpsnd_pulse_close:
rdpsnd_pulse_open: connected
rdpsnd_pulse_close:
rdpsnd_pulse_open: connected
rdpsnd_pulse_close:
rdpsnd_pulse_open: connected
rdpsnd_pulse_close:

IN DEBUG MODE:
DBG sec_send_to_channel (334): Sending encrypted packet:
0000 08 00 00 00 03 00 00 00 05 00 04 00 05 ad ec 00 ................
DBG sec_send_to_channel (334): Sending encrypted packet:
0000 08 00 00 00 03 00 00 00 05 00 04 00 05 ad ed 00 ................
rdpsnd_pulse_close:
rdpsnd_pulse_open: connected
DBG sec_send_to_channel (334): Sending encrypted packet:
0000 08 00 00 00 03 00 00 00 05 00 04 00 27 ae ee 00 ............'...
DBG sec_send_to_channel (334): Sending encrypted packet:
0000 08 00 00 00 03 00 00 00 05 00 04 00 45 ae ef 00 ............E...

The connection is over the LAN.

dead code fragments

There are a lot of dead code fragments all over the source only visible if compiled with '-Wunused-but-set-variable'. I'm not really sure whether it is only dead code or in some cases hidden bugs.

reinserting smartcard

The implementation of smartcard support in Freerdp has the old bug from rdesktop. It is described here:
http://sourceforge.net/tracker/?func=detail&aid=2777237&group_id=24366&atid=381347
http://sourceforge.net/tracker/?func=detail&aid=2789331&group_id=24366&atid=381347

Briefly what is happening:
If I plug in the USB smartcard (for example, eToken Pro Java), then start xfreerdp, I see PIN code request. If I unplug the smartcard, PIN request disappears and normal user/password form is shown. BUT: if I insert the smartcard again, nothing happens.
If I use smartcard reader and separate smartcard, everything works like a charm. When I reinsert smartcard, login dialog changes. Problem only appears with USB smartcards like eToken, where the reader and smartcard is in one body (where the reader is detached at the same time as smartcard).

.settings directory on SCM

There's a .settings used by an IDE inside of SCM.

It would be better to drop it since it is not a common standard and people can use many different IDEs.

@awakecoding I am assigning it to you since it camed with a commit done by you.

rdpdr: printer:name:driver (HP LaserJet print job always 'stopped')

Today I tested sharing my 2 local printers: Cups-PDF and HP-LaserJet-4-Plus.

Both working fine locally.

I started xfreerdp like this:

X11/xfreerdp --plugin rdpdr --data printer -- -a 24 192.168.0.11

And on the server I see my two local printers. But I can print to only
one of them (Cups-PDF). The laserjet ends up going into 'stopped' status.

So then after reading some posts about maybe only one printer works, I
restarted xfreerdp like this:

X11/xfreerdp --plugin rdpdr --data printer:HP-LaserJet-4-Plus -- -a
24 192.168.0.11

And on the server I see only the laserjet. But I still get the same
result. The laserjet print job ends up going into 'stopped' status.

The correct driver is listed in Windows under Properties.

The HP LaserJet prints fine locally. I can even print jobs locally with it immediately after freerdp print jobs end up as 'stopped'.

.

about freerdp_mitm

some time ago there is a plugin freerdp_mitm.c,but i can't find it now,have you solve the problem about the NLA in with the proxy?

Audio Choppy

I was wondering if anyone else was experiencing the rdpsnd choppy when setting the audio quality to High or Dynamic.

Version : freerdp1.0.2
cmd:xfreerdp --no-nla --plugin rdpsnd --data alsa -- --rfx --rfx-mode i -f 192.168.1.95:3389&
Vitural machine:Win7
Audio Quality:High

Freerdp sound (audio) choppy on low bandwidth connection

Sorry if this report is incorrectly formatted, I'm a relative newbie.

Version: 0.7 from tarball source
Hardware: Asus A7n8x, Athlon 2100, 512mb memory; further limited test with Lenovo T43 (specs unknown)
OS: Wary Puppy 5.1.1
Connection: T1 lan and 1.5mb/360k ADSL
Command: xfreerdp -a 16 -z --plugin rdpsnd [win_7_machine_ip_addr]

When connected to Windows 7 server machine via ~15mb/s lan, sound is delivered to client machine cleanly.

When connected to same server via vpn (gpptp) via 1.5mp/s ADSL, sound is choppy. Sound halts approximately once per second, then resumes, then halts again. Each sound interruption accompanied by following errmsg on stdout:

"wave_out_play: underrun occurred
ALSA lib pcm.c:7245:(snd_pcm_recover) underrun occured"

Tried -x m, no improvement. -z flag or not, no discernible change.

Audio quality on slow ADSL link (when it's audible) suggests relatively high audio compression bit rate.

Thanks. Please advise if I should provide further information.

Missing include required to build in OS X

Problem
Current git tip fails to build on OS X because of an unknown identifier (fd_set) in rdpdr_main.h:60

Steps to reproduce

# git clone https://github.com/FreeRDP/FreeRDP.git
# cd FreeRDP/
# sh autogen.sh 
# ./configure
# make

Expected result
No error, built executable

Actual Result

Making all in channels/rdpdr
  CC     rdpdr_la-rdpdr_main.lo
  CC     rdpdr_la-rdpdr_capabilities.lo
  CC     rdpdr_la-devman.lo
In file included from rdpdr_scard.h:28,
                 from devman.c:25:
rdpdr_main.h:60: error: expected specifier-qualifier-list before 'fd_set'
make[2]: *** [rdpdr_la-devman.lo] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

Proposed solution
Including select.h in rdpdr_main.h solved the problem. Patch below:

diff --git a/channels/rdpdr/rdpdr_main.h b/channels/rdpdr/rdpdr_main.h
index 5180347..a4b67c8 100644
--- a/channels/rdpdr/rdpdr_main.h
+++ b/channels/rdpdr/rdpdr_main.h
@@ -23,6 +23,8 @@
 #include <pthread.h>
 #include <freerdp/utils.h>

+#include <sys/select.h>
+
 #include "rdpdr_types.h"

Client fails with pa_operation_get_state() with no sound card

When a client is set to enable audio redirection but lacks the sound card hardware to do so (for example, in a virtual machine), the client will log in but then die after log in when the audio is accessed.

The error is:

Assertion 'o' failed at pulse/operation.c:128, function pa_operation_get_state(). Aborted.

Undefined reference to `freerdp_usleep'

Compilation fails with a message "undefined reference to `freerdp_usleep'"

$ ./configure

checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for x86_64-pc-linux-gnu-gcc... x86_64-pc-linux-gnu-gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether x86_64-pc-linux-gnu-gcc accepts -g... yes
checking for x86_64-pc-linux-gnu-gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of x86_64-pc-linux-gnu-gcc... gcc3
checking whether x86_64-pc-linux-gnu-gcc and cc understand -c and -o together... yes
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking how to print strings... printf
checking for a sed that does not truncate output... /bin/sed
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for fgrep... /bin/grep -F
checking for ld used by x86_64-pc-linux-gnu-gcc... /usr/x86_64-pc-linux-gnu/bin/ld
checking if the linker (/usr/x86_64-pc-linux-gnu/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/x86_64-pc-linux-gnu/bin/ld option to reload object files... -r
checking for x86_64-pc-linux-gnu-objdump... x86_64-pc-linux-gnu-objdump
checking how to recognize dependent libraries... pass_all
checking for x86_64-pc-linux-gnu-dlltool... no
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for x86_64-pc-linux-gnu-ar... x86_64-pc-linux-gnu-ar
checking for archiver @FILE support... @
checking for x86_64-pc-linux-gnu-strip... x86_64-pc-linux-gnu-strip
checking for x86_64-pc-linux-gnu-ranlib... x86_64-pc-linux-gnu-ranlib
checking command to parse /usr/bin/nm -B output from x86_64-pc-linux-gnu-gcc object... ok
checking for sysroot... no
checking for x86_64-pc-linux-gnu-mt... no
checking for mt... no
checking if : is a manifest tool... no
checking how to run the C preprocessor... x86_64-pc-linux-gnu-gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if x86_64-pc-linux-gnu-gcc supports -fno-rtti -fno-exceptions... no
checking for x86_64-pc-linux-gnu-gcc option to produce PIC... -fPIC -DPIC
checking if x86_64-pc-linux-gnu-gcc PIC flag -fPIC -DPIC works... yes
checking if x86_64-pc-linux-gnu-gcc static flag -static works... yes
checking if x86_64-pc-linux-gnu-gcc supports -c -o file.o... yes
checking if x86_64-pc-linux-gnu-gcc supports -c -o file.o... (cached) yes
checking whether the x86_64-pc-linux-gnu-gcc linker (/usr/x86_64-pc-linux-gnu/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for ANSI C header files... (cached) yes
checking whether byte ordering is bigendian... no
checking for pkg-config... /usr/bin/pkg-config
checking for library containing socket... none required
checking for library containing inet_aton... none required
checking sys/select.h usability... yes
checking sys/select.h presence... yes
checking for sys/select.h... yes
checking sys/modem.h usability... no
checking sys/modem.h presence... no
checking for sys/modem.h... no
checking sys/filio.h usability... no
checking sys/filio.h presence... no
checking for sys/filio.h... no
checking sys/strtio.h usability... no
checking sys/strtio.h presence... no
checking for sys/strtio.h... no
checking locale.h usability... yes
checking locale.h presence... yes
checking for locale.h... yes
checking langinfo.h usability... yes
checking langinfo.h presence... yes
checking for langinfo.h... yes
checking for x86_64-pc-linux-gnu-strip... (cached) x86_64-pc-linux-gnu-strip
checking for CRYPTO... yes
checking if architecture needs alignment... no
checking for ALSA... no
checking for PULSE... no
checking for FFMPEG... no
checking for cups-config... 1
checking whether struct tm is in sys/time.h or time.h... time.h
checking for struct tm.tm_zone... yes
checking for dirent.h that defines DIR... yes
checking for library containing opendir... none required
checking for dirfd... yes
checking whether dirfd is declared... yes
checking whether dirfd is a macro... no
checking iconv.h usability... yes
checking iconv.h presence... yes
checking for iconv.h... yes
checking for iconv... yes
checking for iconv declaration... 
         extern size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
checking for socklen_t... yes
checking sys/vfs.h usability... yes
checking sys/vfs.h presence... yes
checking for sys/vfs.h... yes
checking sys/statvfs.h usability... yes
checking sys/statvfs.h presence... yes
checking for sys/statvfs.h... yes
checking sys/statfs.h usability... yes
checking sys/statfs.h presence... yes
checking for sys/statfs.h... yes
checking sys/param.h usability... yes
checking sys/param.h presence... yes
checking for sys/param.h... yes
checking for sys/mount.h... yes
configure: checking how to get filesystem space usage...
checking statvfs64 function (SVR4)... no
checking statvfs function (SVR4)... yes
checking for struct statfs.f_namemax... no
checking for struct statvfs.f_namemax... yes
checking for struct statfs.f_namelen... yes
checking for struct statvfs.f_namelen... no
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... no
checking mntent.h usability... yes
checking mntent.h presence... yes
checking for mntent.h... yes
checking for setmntent... yes
checking for X... libraries , headers 
checking for gethostbyname... yes
checking for connect... yes
checking for remove... yes
checking for shmat... yes
checking for IceConnectionNumber in -lICE... yes
checking for XOpenDisplay in -lX11... yes
checking for XCURSOR... yes
checking for XV... no
checking for XKBFILE... yes
checking for gethostbyname... (cached) yes
checking for connect... (cached) yes
checking for remove... (cached) yes
checking for shmat... (cached) yes
checking for IceConnectionNumber in -lICE... (cached) yes
checking for XineramaIsActive in -lXinerama... no
configure: creating ./config.status
config.status: creating Makefile
config.status: creating freerdp.pc
config.status: creating libfreerdp-asn1/Makefile
config.status: creating libfreerdp-rfx/Makefile
config.status: creating libfreerdp-rfx/sse/Makefile
config.status: creating libfreerdp-rfx/neon/Makefile
config.status: creating libfreerdp-gdi/Makefile
config.status: creating libfreerdp-gdi/sse/Makefile
config.status: creating libfreerdp-gdi/neon/Makefile
config.status: creating libfreerdp-utils/Makefile
config.status: creating libfreerdp-core/Makefile
config.status: creating docs/Makefile
config.status: creating include/Makefile
config.status: creating include/freerdp/Makefile
config.status: creating include/freerdp/utils/Makefile
config.status: creating include/freerdp/types/Makefile
config.status: creating include/freerdp/constants/Makefile
config.status: creating libfreerdp-kbd/Makefile
config.status: creating keymaps/Makefile
config.status: creating cunit/Makefile
config.status: creating libfreerdp-chanman/Makefile
config.status: creating X11/Makefile
config.status: creating dfb/Makefile
config.status: creating win/Makefile
config.status: creating channels/rdpdbg/Makefile
config.status: creating channels/rdpsnd/Makefile
config.status: creating channels/rdpsnd/alsa/Makefile
config.status: creating channels/rdpsnd/pulse/Makefile
config.status: creating channels/drdynvc/Makefile
config.status: creating channels/drdynvc/pnpdr/Makefile
config.status: creating channels/drdynvc/tsmf/Makefile
config.status: creating channels/drdynvc/tsmf/ffmpeg/Makefile
config.status: creating channels/drdynvc/tsmf/alsa/Makefile
config.status: creating channels/drdynvc/tsmf/pulse/Makefile
config.status: creating channels/drdynvc/audin/Makefile
config.status: creating channels/drdynvc/audin/alsa/Makefile
config.status: creating channels/drdynvc/audin/pulse/Makefile
config.status: creating channels/cliprdr/Makefile
config.status: creating channels/rdpdr/Makefile
config.status: creating channels/rdpdr/disk/Makefile
config.status: creating channels/rdpdr/printer/Makefile
config.status: creating channels/rdpdr/serial/Makefile
config.status: creating channels/rdpdr/parallel/Makefile
config.status: creating channels/rdpdr/smartcard/Makefile
config.status: creating contrib/Makefile
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands

FreeRDP configure result:

Cryptography : openssl
TLS          : enabled
ALSA         : no
PulseAudio   : no
FFmpeg       : no
Printer      : cups
CUnit        : no
X11          : yes
XVideo       : no
xkbfile      : yes
DirectFB     : no
Xinerama     : yes
Smart card   : no
configure: WARNING: unrecognized options: --without-debug-channel, --without-debug-rdp5, --without-sound, --without-libsamplerate

./make

make[1]: Entering directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999'
Making all in libfreerdp-asn1
make[2]: Entering directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/libfreerdp-asn1'
  CC     libfreerdp_asn1_la-asn_codecs_prim.lo
  CC     libfreerdp_asn1_la-asn_SEQUENCE_OF.lo
  CC     libfreerdp_asn1_la-asn_SET_OF.lo
  CC     libfreerdp_asn1_la-ber_decoder.lo
  CC     libfreerdp_asn1_la-ber_tlv_length.lo
  CC     libfreerdp_asn1_la-ber_tlv_tag.lo
  CC     libfreerdp_asn1_la-BIT_STRING.lo
  CC     libfreerdp_asn1_la-constraints.lo
  CC     libfreerdp_asn1_la-constr_CHOICE.lo
  CC     libfreerdp_asn1_la-constr_SEQUENCE.lo
  CC     libfreerdp_asn1_la-constr_SEQUENCE_OF.lo
  CC     libfreerdp_asn1_la-constr_SET_OF.lo
  CC     libfreerdp_asn1_la-constr_TYPE.lo
  CC     libfreerdp_asn1_la-der_encoder.lo
  CC     libfreerdp_asn1_la-GeneralString.lo
  CC     libfreerdp_asn1_la-INTEGER.lo
  CC     libfreerdp_asn1_la-NativeEnumerated.lo
  CC     libfreerdp_asn1_la-NativeInteger.lo
  CC     libfreerdp_asn1_la-OBJECT_IDENTIFIER.lo
  CC     libfreerdp_asn1_la-OCTET_STRING.lo
  CC     libfreerdp_asn1_la-per_decoder.lo
  CC     libfreerdp_asn1_la-per_encoder.lo
  CC     libfreerdp_asn1_la-per_opentype.lo
  CC     libfreerdp_asn1_la-per_support.lo
  CC     libfreerdp_asn1_la-xer_decoder.lo
  CC     libfreerdp_asn1_la-xer_encoder.lo
  CC     libfreerdp_asn1_la-xer_support.lo
  CC     libfreerdp_asn1_la-NegoData.lo
  CC     libfreerdp_asn1_la-NegoDataItem.lo
  CC     libfreerdp_asn1_la-TSCredentials.lo
  CC     libfreerdp_asn1_la-TSCspDataDetail.lo
  CC     libfreerdp_asn1_la-TSPasswordCreds.lo
  CC     libfreerdp_asn1_la-TSRequest.lo
  CC     libfreerdp_asn1_la-TSSmartCardCreds.lo
  CC     libfreerdp_asn1_la-ContextFlags.lo
  CC     libfreerdp_asn1_la-MechType.lo
  CC     libfreerdp_asn1_la-MechTypeList.lo
  CC     libfreerdp_asn1_la-NegHints.lo
  CC     libfreerdp_asn1_la-NegotiationToken.lo
  CC     libfreerdp_asn1_la-NegTokenInit2.lo
  CC     libfreerdp_asn1_la-NegTokenInit.lo
  CC     libfreerdp_asn1_la-NegTokenResp.lo
  CCLD   libfreerdp-asn1.la
make[2]: Leaving directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/libfreerdp-asn1'
Making all in libfreerdp-rfx
make[2]: Entering directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/libfreerdp-rfx'
make[3]: Entering directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/libfreerdp-rfx'
  CC     libfreerdp_rfx_la-rfx_bitstream.lo
  CC     libfreerdp_rfx_la-rfx_rlgr.lo
  CC     libfreerdp_rfx_la-rfx_differential.lo
  CC     libfreerdp_rfx_la-rfx_quantization.lo
  CC     libfreerdp_rfx_la-rfx_dwt.lo
  CC     libfreerdp_rfx_la-rfx_decode.lo
rfx_decode.c: In function 'rfx_decode_component':
rfx_decode.c:112: warning: statement with no effect
rfx_decode.c:114: warning: statement with no effect
rfx_decode.c:116: warning: statement with no effect
rfx_decode.c:118: warning: statement with no effect
rfx_decode.c:120: warning: statement with no effect
rfx_decode.c:122: warning: statement with no effect
rfx_decode.c:124: warning: statement with no effect
rfx_decode.c:126: warning: statement with no effect
rfx_decode.c:128: warning: statement with no effect
rfx_decode.c:130: warning: statement with no effect
rfx_decode.c: In function 'rfx_decode_rgb':
rfx_decode.c:139: warning: statement with no effect
rfx_decode.c:145: warning: statement with no effect
rfx_decode.c:147: warning: statement with no effect
rfx_decode.c:149: warning: statement with no effect
rfx_decode.c:152: warning: statement with no effect
rfx_decode.c:154: warning: statement with no effect
  CC     libfreerdp_rfx_la-rfx_encode.lo
rfx_encode.c: In function 'rfx_encode_component':
rfx_encode.c:132: warning: statement with no effect
rfx_encode.c:134: warning: statement with no effect
rfx_encode.c:136: warning: statement with no effect
rfx_encode.c:138: warning: statement with no effect
rfx_encode.c:140: warning: statement with no effect
rfx_encode.c:142: warning: statement with no effect
rfx_encode.c:144: warning: statement with no effect
rfx_encode.c:146: warning: statement with no effect
rfx_encode.c:148: warning: statement with no effect
rfx_encode.c:150: warning: statement with no effect
rfx_encode.c: In function 'rfx_encode_rgb':
rfx_encode.c:162: warning: statement with no effect
rfx_encode.c:164: warning: statement with no effect
rfx_encode.c:167: warning: statement with no effect
rfx_encode.c:169: warning: statement with no effect
rfx_encode.c:171: warning: statement with no effect
rfx_encode.c:181: warning: statement with no effect
  CC     libfreerdp_rfx_la-rfx_pool.lo
  CC     libfreerdp_rfx_la-librfx.lo
librfx.c: In function 'rfx_profiler_create':
librfx.c:55: warning: left-hand operand of comma expression has no effect
librfx.c:55: warning: statement with no effect
librfx.c:56: warning: left-hand operand of comma expression has no effect
librfx.c:56: warning: statement with no effect
librfx.c:57: warning: left-hand operand of comma expression has no effect
librfx.c:57: warning: statement with no effect
librfx.c:58: warning: left-hand operand of comma expression has no effect
librfx.c:58: warning: statement with no effect
librfx.c:59: warning: left-hand operand of comma expression has no effect
librfx.c:59: warning: statement with no effect
librfx.c:60: warning: left-hand operand of comma expression has no effect
librfx.c:60: warning: statement with no effect
librfx.c:61: warning: left-hand operand of comma expression has no effect
librfx.c:61: warning: statement with no effect
librfx.c:62: warning: left-hand operand of comma expression has no effect
librfx.c:62: warning: statement with no effect
librfx.c:64: warning: left-hand operand of comma expression has no effect
librfx.c:64: warning: statement with no effect
librfx.c:65: warning: left-hand operand of comma expression has no effect
librfx.c:65: warning: statement with no effect
librfx.c:66: warning: left-hand operand of comma expression has no effect
librfx.c:66: warning: statement with no effect
librfx.c:67: warning: left-hand operand of comma expression has no effect
librfx.c:67: warning: statement with no effect
librfx.c:68: warning: left-hand operand of comma expression has no effect
librfx.c:68: warning: statement with no effect
librfx.c:69: warning: left-hand operand of comma expression has no effect
librfx.c:69: warning: statement with no effect
librfx.c:70: warning: left-hand operand of comma expression has no effect
librfx.c:70: warning: statement with no effect
librfx.c:71: warning: left-hand operand of comma expression has no effect
librfx.c:71: warning: statement with no effect
librfx.c: In function 'rfx_profiler_free':
librfx.c:76: warning: statement with no effect
librfx.c:77: warning: statement with no effect
librfx.c:78: warning: statement with no effect
librfx.c:79: warning: statement with no effect
librfx.c:80: warning: statement with no effect
librfx.c:81: warning: statement with no effect
librfx.c:82: warning: statement with no effect
librfx.c:83: warning: statement with no effect
librfx.c:85: warning: statement with no effect
librfx.c:86: warning: statement with no effect
librfx.c:87: warning: statement with no effect
librfx.c:88: warning: statement with no effect
librfx.c:89: warning: statement with no effect
librfx.c:90: warning: statement with no effect
librfx.c:91: warning: statement with no effect
librfx.c:92: warning: statement with no effect
librfx.c: In function 'rfx_profiler_print':
librfx.c:99: warning: statement with no effect
librfx.c:100: warning: statement with no effect
librfx.c:101: warning: statement with no effect
librfx.c:102: warning: statement with no effect
librfx.c:103: warning: statement with no effect
librfx.c:104: warning: statement with no effect
librfx.c:105: warning: statement with no effect
librfx.c:106: warning: statement with no effect
librfx.c:108: warning: statement with no effect
librfx.c:109: warning: statement with no effect
librfx.c:110: warning: statement with no effect
librfx.c:111: warning: statement with no effect
librfx.c:112: warning: statement with no effect
librfx.c:113: warning: statement with no effect
librfx.c:114: warning: statement with no effect
librfx.c:115: warning: statement with no effect
  CCLD   libfreerdp-rfx.la
make[3]: Leaving directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/libfreerdp-rfx'
make[2]: Leaving directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/libfreerdp-rfx'
Making all in libfreerdp-gdi
make[2]: Entering directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/libfreerdp-gdi'
make[3]: Entering directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/libfreerdp-gdi'
  CC     libfreerdp_gdi_la-gdi_bitmap.lo
  CC     libfreerdp_gdi_la-gdi_region.lo
  CC     libfreerdp_gdi_la-gdi_drawing.lo
  CC     libfreerdp_gdi_la-gdi_palette.lo
  CC     libfreerdp_gdi_la-gdi_clipping.lo
  CC     libfreerdp_gdi_la-gdi_brush.lo
  CC     libfreerdp_gdi_la-gdi_shape.lo
  CC     libfreerdp_gdi_la-gdi_pen.lo
  CC     libfreerdp_gdi_la-gdi_dc.lo
  CC     libfreerdp_gdi_la-gdi_line.lo
  CC     libfreerdp_gdi_la-gdi_32bpp.lo
  CC     libfreerdp_gdi_la-gdi_16bpp.lo
  CC     libfreerdp_gdi_la-gdi_8bpp.lo
  CC     libfreerdp_gdi_la-color.lo
  CC     libfreerdp_gdi_la-decode.lo
  CC     libfreerdp_gdi_la-gdi.lo
  CCLD   libfreerdp-gdi.la
make[3]: Leaving directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/libfreerdp-gdi'
make[2]: Leaving directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/libfreerdp-gdi'
Making all in libfreerdp-utils
make[2]: Entering directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/libfreerdp-utils'
  CC     libfreerdp_utils_la-datablob.lo
  CC     libfreerdp_utils_la-memory.lo
  CC     libfreerdp_utils_la-semaphore.lo
  CC     libfreerdp_utils_la-unicode.lo
  CC     libfreerdp_utils_la-wait_obj.lo
  CC     libfreerdp_utils_la-chan_plugin.lo
  CC     libfreerdp_utils_la-stopwatch.lo
  CC     libfreerdp_utils_la-profiler.lo
  CC     libfreerdp_utils_la-hexdump.lo
  CCLD   libfreerdp-utils.la
make[2]: Leaving directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/libfreerdp-utils'
Making all in libfreerdp-core
make[2]: Entering directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/libfreerdp-core'
  CC     libfreerdp_core_la-asn1.lo
  CC     libfreerdp_core_la-bitmap.lo
  CC     libfreerdp_core_la-cache.lo
  CC     libfreerdp_core_la-capabilities.lo
  CC     libfreerdp_core_la-connect.lo
  CC     libfreerdp_core_la-chan.lo
  CC     libfreerdp_core_la-ext.lo
  CC     libfreerdp_core_la-freerdp.lo
  CC     libfreerdp_core_la-iso.lo
  CC     libfreerdp_core_la-license.lo
  CC     libfreerdp_core_la-mcs.lo
  CC     libfreerdp_core_la-mppc.lo
  CC     libfreerdp_core_la-orders.lo
  CC     libfreerdp_core_la-stream.lo
  CC     libfreerdp_core_la-pstcache.lo
  CC     libfreerdp_core_la-rail.lo
  CC     libfreerdp_core_la-rdp.lo
  CC     libfreerdp_core_la-security.lo
  CC     libfreerdp_core_la-network.lo
  CC     libfreerdp_core_la-tcp.lo
  CC     libfreerdp_core_la-nego.lo
  CC     libfreerdp_core_la-errinfo.lo
  CC     libfreerdp_core_la-surface.lo
  CC     libfreerdp_core_la-openssl.lo
  CC     libfreerdp_core_la-credssp.lo
  CC     libfreerdp_core_la-ntlmssp.lo
  CCLD   libfreerdp-core.la
make[2]: Leaving directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/libfreerdp-core'
Making all in docs
make[2]: Entering directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/docs'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/docs'
Making all in contrib
make[2]: Entering directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/contrib'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/contrib'
Making all in include
make[2]: Entering directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/include'
Making all in freerdp
make[3]: Entering directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/include/freerdp'
Making all in types
make[4]: Entering directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/include/freerdp/types'
make[4]: Nothing to be done for `all'.
make[4]: Leaving directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/include/freerdp/types'
Making all in utils
make[4]: Entering directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/include/freerdp/utils'
make[4]: Nothing to be done for `all'.
make[4]: Leaving directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/include/freerdp/utils'
Making all in constants
make[4]: Entering directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/include/freerdp/constants'
make[4]: Nothing to be done for `all'.
make[4]: Leaving directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/include/freerdp/constants'
make[4]: Entering directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/include/freerdp'
make[4]: Nothing to be done for `all-am'.
make[4]: Leaving directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/include/freerdp'
make[3]: Leaving directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/include/freerdp'
make[3]: Entering directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/include'
make[3]: Nothing to be done for `all-am'.
make[3]: Leaving directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/include'
make[2]: Leaving directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/include'
Making all in keymaps
make[2]: Entering directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/keymaps'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/keymaps'
Making all in libfreerdp-kbd
make[2]: Entering directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/libfreerdp-kbd'
  CC     libfreerdp_kbd_la-layout_ids.lo
  CC     libfreerdp_kbd_la-locales.lo
  CC     libfreerdp_kbd_la-x_layout_id_table.lo
  CC     libfreerdp_kbd_la-layouts_xkb.lo
  CC     libfreerdp_kbd_la-libkbd.lo
  CCLD   libfreerdp-kbd.la
make[2]: Leaving directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/libfreerdp-kbd'
Making all in libfreerdp-chanman
make[2]: Entering directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/libfreerdp-chanman'
  CC     libfreerdp_chanman_la-libchanman.lo
  CCLD   libfreerdp-chanman.la
make[2]: Leaving directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/libfreerdp-chanman'
Making all in channels/rdpsnd
make[2]: Entering directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/channels/rdpsnd'
  CC     rdpsnd_la-rdpsnd_dsp.lo
  CC     rdpsnd_la-rdpsnd_main.lo
  CCLD   rdpsnd.la
make[2]: Leaving directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/channels/rdpsnd'
Making all in channels/drdynvc
make[2]: Entering directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/channels/drdynvc'
  CC     drdynvc_la-dvcman.lo
  CC     drdynvc_la-drdynvc_main.lo
  CCLD   drdynvc.la
make[2]: Leaving directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/channels/drdynvc'
Making all in channels/drdynvc/pnpdr
make[2]: Entering directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/channels/drdynvc/pnpdr'
  CC     pnpdr_la-pnpdr_main.lo
  CCLD   pnpdr.la
make[2]: Leaving directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/channels/drdynvc/pnpdr'
Making all in channels/drdynvc/tsmf
make[2]: Entering directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/channels/drdynvc/tsmf'
  CC     tsmf_la-tsmf_ifman.lo
  CC     tsmf_la-tsmf_media.lo
  CC     tsmf_la-tsmf_decoder.lo
  CC     tsmf_la-tsmf_audio.lo
  CC     tsmf_la-tsmf_codec.lo
  CC     tsmf_la-tsmf_main.lo
  CCLD   tsmf.la
make[2]: Leaving directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/channels/drdynvc/tsmf'
Making all in channels/drdynvc/audin
make[2]: Entering directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/channels/drdynvc/audin'
  CC     audin_la-audin_dsp.lo
  CC     audin_la-audin_main.lo
  CCLD   audin.la
make[2]: Leaving directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/channels/drdynvc/audin'
Making all in channels/cliprdr
make[2]: Entering directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/channels/cliprdr'
  CC     cliprdr_la-cliprdr_main.lo
  CC     cliprdr_la-cliprdr_x11.lo
  CCLD   cliprdr.la
make[2]: Leaving directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/channels/cliprdr'
Making all in channels/rdpdbg
make[2]: Entering directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/channels/rdpdbg'
  CC     rdpdbg_la-rdpdbg_main.lo
  CCLD   rdpdbg.la
make[2]: Leaving directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/channels/rdpdbg'
Making all in channels/rdpdr
make[2]: Entering directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/channels/rdpdr'
  CC     rdpdr_la-rdpdr_main.lo
  CC     rdpdr_la-rdpdr_capabilities.lo
  CC     rdpdr_la-devman.lo
  CC     rdpdr_la-irp.lo
  CC     rdpdr_la-irp_queue.lo
  CC     rdpdr_la-rdpdr_scard.lo
  CCLD   rdpdr.la
make[2]: Leaving directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/channels/rdpdr'
Making all in channels/rdpdr/disk
make[2]: Entering directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/channels/rdpdr/disk'
  CC     disk_la-disk_main.lo
  CCLD   disk.la
make[2]: Leaving directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/channels/rdpdr/disk'
Making all in channels/rdpdr/printer
make[2]: Entering directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/channels/rdpdr/printer'
  CC     printer_la-printer_main.lo
  CC     printer_la-printer_cups.lo
  CCLD   printer.la
make[2]: Leaving directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/channels/rdpdr/printer'
Making all in channels/rdpdr/serial
make[2]: Entering directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/channels/rdpdr/serial'
  CC     serial_la-serial_main.lo
  CCLD   serial.la
make[2]: Leaving directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/channels/rdpdr/serial'
Making all in channels/rdpdr/parallel
make[2]: Entering directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/channels/rdpdr/parallel'
  CC     parallel_la-parallel_main.lo
  CCLD   parallel.la
make[2]: Leaving directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/channels/rdpdr/parallel'
Making all in X11
make[2]: Entering directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/X11'
  CC     xfreerdp-xf_event.o
  CC     xfreerdp-xf_keyboard.o
  CC     xfreerdp-xf_win.o
  CC     xfreerdp-xf_video.o
  CC     xfreerdp-xf_decode.o
  CC     xfreerdp-xfreerdp.o
  CCLD   xfreerdp
../libfreerdp-core/.libs/libfreerdp-core.so: undefined reference to `freerdp_usleep'
collect2: ld returned 1 exit status
make[2]: Leaving directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999/X11'
make[1]: Leaving directory `/var/tmp/paludis/net-misc-freerdp-9999/work/freerdp-9999'
make[2]: *** [xfreerdp] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

Certificate Validation and Storage

Implement certificate validation and storage, such that when the user accepts a certificate with the ui_check_certificate callback it does not mark it is checked as valid on the next connection.

Change current behavior in xfreerdp where an invalid certificate only shows a warning, instead of requesting explicit acceptation from the user on the command-line.

Implement similar certificate checking mechanism for older RDP certificates (non-TLS), where the certificate is asked for acceptation and then stored in a certificate store if accepted. On the next connection, the certificate should be validated if it is present in the certificate store.

cursor rendering on Xdmx

The setup is a system with two PCs, each with a single monitor sized 1600x1200, in portrait mode (making it two 1200x1600 monitors). They are combined using Xdmx into one virtual 2400x1600 screen.

Running a freerdp session on each PC works as expected.
But combined with Xdmx, there seems to be a rendering problem.

I am able to reproduce the problem on a single PC, using two Xephyr instances. (Xnest does not implement the Render extension, and already shows the problem without Xdmx)

To better visualize what the problem is, I installed a new cursor (only the 'Normal Select' pointer was changed from the default to 'Windows Areo').

Running xfreerdp with


the cursor looks perfectly fine:

This is the setup screen where the new cursor is selected. The cursor itself is at the top right.

When run in a Xephyr server instance, I get the same result. Even when using one 2400x1600 Xephyr instance, xfreerdp renders the cursor just fine.

steps to reproduce:

DISPLAY=:1 xfreerdp -f -x lan -u username -d domain -p passw windows7-ip

But when Xdmx comes into play, the cursor turns into this:

steps to reproduce

Xephyr :2 +xinerama &
Xdmx :3 -display :1 -display :2 +xinerama &
DISPLAY=:3 xfreerdp -f -x lan -u username -d domain -p passw windows7-ip

  • this is not a problem of the Aero cursor; it happens with the default cursor too
  • xfreerdp shows one extra message: xf_video_init: no shmem available, but that seems unrelated (running the first use case with extension MIT-SH disabled triggers the same warning, without affecting the cursor)
  • running Xdmx without xinerama yields the same problem (xfreerdp running in only 1 of the Xephyr instances)

Is this a known problem? Am I missing something?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.