From: <he...@us...> - 2014-05-20 10:43:05
|
Revision: 1802 http://sourceforge.net/p/rdesktop/code/1802 Author: hean01 Date: 2014-05-20 10:43:03 +0000 (Tue, 20 May 2014) Log Message: ----------- Applied slightly modified patch #220 that fixes hash collisions with keysyms. Modified Paths: -------------- rdesktop/trunk/types.h rdesktop/trunk/xkeymap.c Modified: rdesktop/trunk/types.h =================================================================== --- rdesktop/trunk/types.h 2014-05-20 07:49:52 UTC (rev 1801) +++ rdesktop/trunk/types.h 2014-05-20 10:43:03 UTC (rev 1802) @@ -2,6 +2,7 @@ rdesktop: A Remote Desktop Protocol client. Common data types Copyright (C) Matthew Chapman 1999-2008 + Copyright 2014 Henrik Andersson <he...@ce...> for Cendio AB 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 @@ -136,6 +137,16 @@ } key_translation; +typedef struct _key_translation_entry +{ + key_translation *tr; + /* The full KeySym for this entry, not KEYMAP_MASKed */ + uint32 keysym; + /* This will be non-NULL if there has been a hash collision */ + struct _key_translation_entry *next; +} +key_translation_entry; + typedef struct _VCHANNEL { uint16 mcs_id; Modified: rdesktop/trunk/xkeymap.c =================================================================== --- rdesktop/trunk/xkeymap.c 2014-05-20 07:49:52 UTC (rev 1801) +++ rdesktop/trunk/xkeymap.c 2014-05-20 10:43:03 UTC (rev 1802) @@ -4,6 +4,7 @@ Copyright (C) Matthew Chapman <matthewc.unsw.edu.au> 1999-2008 Copyright 2003-2008 Peter Astrand <as...@ce...> for Cendio AB + Copyright 2014 Henrik Andersson <he...@ce...> for Cendio AB 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 @@ -51,7 +52,7 @@ extern RD_BOOL g_numlock_sync; static RD_BOOL keymap_loaded; -static key_translation *keymap[KEYMAP_SIZE]; +static key_translation_entry *keymap[KEYMAP_SIZE]; static KeySym keypress_keysyms[256]; static int min_keycode; static uint16 remote_modifier_state = 0; @@ -73,11 +74,93 @@ } } +/* Free the key_translation_entry for a given keysym and remove from the table */ static void +delete_key_translation_entry(KeySym keysym) +{ + uint32 hash; + key_translation_entry *ptr; + key_translation_entry *next; + key_translation_entry *prev; + key_translation_entry tmp; + + /* Faking a prev node allows us to keep the algorithm simple */ + hash = keysym & KEYMAP_MASK; + ptr = keymap[hash]; + tmp.next = ptr; + prev = &tmp; + + while (ptr) + { + next = ptr->next; + if (ptr->keysym == keysym) + { + free_key_translation(ptr->tr); + prev->next = next; + xfree(ptr); + } + else + { + prev = ptr; + } + + ptr = next; + } + + /* Copy pointer back from our fake node */ + keymap[hash] = tmp.next; +} + +/* Allocate and return a new entry in the translation table */ +static key_translation_entry * +new_key_translation_entry(KeySym keysym) +{ + uint32 hash; + key_translation_entry *entry; + + /* Clear out any existing entry */ + delete_key_translation_entry(keysym); + + /* Allocate the new one */ + entry = (key_translation_entry *) xmalloc(sizeof(key_translation_entry)); + memset(entry, 0, sizeof(key_translation_entry)); + entry->keysym = keysym; + + /* And insert it at head of list */ + hash = keysym & KEYMAP_MASK; + entry->next = keymap[hash]; + keymap[hash] = entry; + + return entry; +} + +/* Retrieve the key_translation_entry for a given keysym */ +static key_translation_entry * +get_key_translation_entry(uint32 keysym) +{ + key_translation_entry *ptr; + key_translation_entry *next; + + ptr = keymap[keysym & KEYMAP_MASK]; + + while (ptr) + { + next = ptr->next; + if (ptr->keysym == keysym) + return ptr; + + ptr = next; + } + + /* Not found */ + return NULL; +} + +static void add_to_keymap(char *keyname, uint8 scancode, uint16 modifiers, char *mapname) { KeySym keysym; - key_translation *tr; + key_translation_entry *entry; keysym = XStringToKeysym(keyname); if (keysym == NoSymbol) @@ -89,13 +172,15 @@ DEBUG_KBD(("Adding translation, keysym=0x%x, scancode=0x%x, " "modifiers=0x%x\n", (unsigned int) keysym, scancode, modifiers)); - tr = (key_translation *) xmalloc(sizeof(key_translation)); - memset(tr, 0, sizeof(key_translation)); - tr->scancode = scancode; - tr->modifiers = modifiers; - free_key_translation(keymap[keysym & KEYMAP_MASK]); - keymap[keysym & KEYMAP_MASK] = tr; + /* Make a new entry in the table */ + entry = new_key_translation_entry(keysym); + /* And add the new translation to it */ + entry->tr = (key_translation *) xmalloc(sizeof(key_translation)); + memset(entry->tr, 0, sizeof(key_translation)); + entry->tr->scancode = scancode; + entry->tr->modifiers = modifiers; + return; } @@ -103,6 +188,8 @@ add_sequence(char *rest, char *mapname) { KeySym keysym; + KeySym seq_keysym; + key_translation_entry *entry; key_translation *tr, **prev_next; size_t chars; char keyname[KEYMAP_MAX_LINE_LENGTH]; @@ -123,11 +210,10 @@ return; } - DEBUG_KBD(("Adding sequence for keysym (0x%lx, %s) -> ", keysym, keyname)); - free_key_translation(keymap[keysym & KEYMAP_MASK]); - prev_next = &keymap[keysym & KEYMAP_MASK]; + entry = new_key_translation_entry(keysym); + prev_next = &(entry->tr); while (*rest) { @@ -140,22 +226,28 @@ STRNCPY(keyname, rest, chars + 1); rest += chars; - keysym = XStringToKeysym(keyname); - if (keysym == NoSymbol) + seq_keysym = XStringToKeysym(keyname); + if (seq_keysym == NoSymbol) { DEBUG_KBD(("Bad keysym \"%s\" in keymap %s (ignoring line)\n", keyname, mapname)); + delete_key_translation_entry(keysym); return; } /* Allocate space for key_translation structure */ tr = (key_translation *) xmalloc(sizeof(key_translation)); memset(tr, 0, sizeof(key_translation)); + + /* Do this straight away so the key_translation won't get orphaned on error */ + if (!entry->tr) + entry->tr = tr; + *prev_next = tr; prev_next = &tr->next; - tr->seq_keysym = keysym; + tr->seq_keysym = seq_keysym; - DEBUG_KBD(("0x%x, ", (unsigned int) keysym)); + DEBUG_KBD(("0x%x, ", (unsigned int) seq_keysym)); } DEBUG_KBD(("\n")); } @@ -638,8 +730,11 @@ { key_translation tr = { 0, 0, 0, 0 }; key_translation *ptr; + key_translation_entry *entry; - ptr = keymap[keysym & KEYMAP_MASK]; + entry = get_key_translation_entry(keysym); + ptr = entry ? entry->tr : NULL; + if (ptr) { tr = *ptr; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <he...@us...> - 2014-05-20 14:34:48
|
Revision: 1805 http://sourceforge.net/p/rdesktop/code/1805 Author: hean01 Date: 2014-05-20 14:34:45 +0000 (Tue, 20 May 2014) Log Message: ----------- Run indentation script. Modified Paths: -------------- rdesktop/trunk/iso.c rdesktop/trunk/licence.c rdesktop/trunk/rdp.c Modified: rdesktop/trunk/iso.c =================================================================== --- rdesktop/trunk/iso.c 2014-05-20 11:24:59 UTC (rev 1804) +++ rdesktop/trunk/iso.c 2014-05-20 14:34:45 UTC (rev 1805) @@ -228,7 +228,7 @@ return False; iso_send_connection_request(username, neg_proto); - + s = iso_recv_msg(&code, NULL); if (s == NULL) return False; Modified: rdesktop/trunk/licence.c =================================================================== --- rdesktop/trunk/licence.c 2014-05-20 11:24:59 UTC (rev 1804) +++ rdesktop/trunk/licence.c 2014-05-20 14:34:45 UTC (rev 1805) @@ -116,7 +116,7 @@ out_uint8(s, ((g_rdp_version >= RDP_V5) ? 3 : 2)); /* version */ out_uint16_le(s, length); - out_uint32_le(s, 1); // KEY_EXCHANGE_ALG_RSA + out_uint32_le(s, 1); // KEY_EXCHANGE_ALG_RSA out_uint16(s, 0); out_uint16_le(s, 0xff01); @@ -315,9 +315,9 @@ /* There is a special case in the error alert handling, when licensing is all good and the server is not sending a license to client, a "Server License Error PDU - Valid Client" packet is sent which means, every thing is ok. - + Therefor we should flag that everything is ok with license here. - */ + */ if (error_code == 0x07) { g_licence_issued = True; @@ -346,8 +346,8 @@ g_licence_error_result = True; } - + /* Process a licence packet */ void licence_process(STREAM s) Modified: rdesktop/trunk/rdp.c =================================================================== --- rdesktop/trunk/rdp.c 2014-05-20 11:24:59 UTC (rev 1804) +++ rdesktop/trunk/rdp.c 2014-05-20 14:34:45 UTC (rev 1805) @@ -1507,7 +1507,7 @@ */ break; - case RDP_DATA_PDU_AUTORECONNECT_STATUS: + case RDP_DATA_PDU_AUTORECONNECT_STATUS: warning("Automatic reconnect using cookie, failed.\n"); break; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <he...@us...> - 2014-05-20 14:37:05
|
Revision: 1806 http://sourceforge.net/p/rdesktop/code/1806 Author: hean01 Date: 2014-05-20 14:37:02 +0000 (Tue, 20 May 2014) Log Message: ----------- Bump version to 1.8.2 and updated ChangeLog Modified Paths: -------------- rdesktop/trunk/configure.ac rdesktop/trunk/doc/ChangeLog rdesktop/trunk/rdesktop.spec Modified: rdesktop/trunk/configure.ac =================================================================== --- rdesktop/trunk/configure.ac 2014-05-20 14:34:45 UTC (rev 1805) +++ rdesktop/trunk/configure.ac 2014-05-20 14:37:02 UTC (rev 1806) @@ -1,4 +1,4 @@ -AC_INIT(rdesktop, 1.8.1post) +AC_INIT(rdesktop, 1.8.2) AC_CONFIG_SRCDIR([rdesktop.c]) Modified: rdesktop/trunk/doc/ChangeLog =================================================================== --- rdesktop/trunk/doc/ChangeLog 2014-05-20 14:34:45 UTC (rev 1805) +++ rdesktop/trunk/doc/ChangeLog 2014-05-20 14:37:02 UTC (rev 1806) @@ -1,3 +1,19 @@ +rdesktop (1.8.2) + * Support enhanced server redirection (Session broker 2012) + * Support License Error Alert PDU + * Changed default driver for printer redirection + * Fix CredSSP login using non-ASCII username/password + * Fix double login prompt bug with Win2008 server redirection + * Fix keysym collisions + * Fix mouse cursor with 2012 R2 + * Fix local drive redirection with Win8 / Win2012 + * Fix issue with mouse cursor hotspot + * Fix issue with mouse / keyboard against VirtualBox RDP + * Fix uncomplete czech keymap + * Fix error in dutch keymap + + -- Henrik Andersson <he...@us...> 2014-05-20 + rdesktop (1.8.1) * Fix a typo in configure.ac * Fix a bug which made rdesktop steal CPU cycles. Modified: rdesktop/trunk/rdesktop.spec =================================================================== --- rdesktop/trunk/rdesktop.spec 2014-05-20 14:34:45 UTC (rev 1805) +++ rdesktop/trunk/rdesktop.spec 2014-05-20 14:37:02 UTC (rev 1806) @@ -1,6 +1,6 @@ Summary: Remote Desktop Protocol client Name: rdesktop -Version: 1.8.1post +Version: 1.8.2 Release: 1 License: GPL; see COPYING Group: Applications/Communications This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <he...@us...> - 2014-05-20 15:19:10
|
Revision: 1808 http://sourceforge.net/p/rdesktop/code/1808 Author: hean01 Date: 2014-05-20 15:19:07 +0000 (Tue, 20 May 2014) Log Message: ----------- Bump version to 1.8.2post Modified Paths: -------------- rdesktop/trunk/configure.ac rdesktop/trunk/rdesktop.spec Modified: rdesktop/trunk/configure.ac =================================================================== --- rdesktop/trunk/configure.ac 2014-05-20 14:56:29 UTC (rev 1807) +++ rdesktop/trunk/configure.ac 2014-05-20 15:19:07 UTC (rev 1808) @@ -1,4 +1,4 @@ -AC_INIT(rdesktop, 1.8.2) +AC_INIT(rdesktop, 1.8.2post) AC_CONFIG_SRCDIR([rdesktop.c]) Modified: rdesktop/trunk/rdesktop.spec =================================================================== --- rdesktop/trunk/rdesktop.spec 2014-05-20 14:56:29 UTC (rev 1807) +++ rdesktop/trunk/rdesktop.spec 2014-05-20 15:19:07 UTC (rev 1808) @@ -1,6 +1,6 @@ Summary: Remote Desktop Protocol client Name: rdesktop -Version: 1.8.2 +Version: 1.8.2post Release: 1 License: GPL; see COPYING Group: Applications/Communications This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <he...@us...> - 2014-06-27 13:15:34
|
Revision: 1816 http://sourceforge.net/p/rdesktop/code/1816 Author: hean01 Date: 2014-06-27 13:15:24 +0000 (Fri, 27 Jun 2014) Log Message: ----------- Fix constant naming and enabled windowskey by default. Fixes bug #384 Thanks to Alexander Zakharov for pinpointing the core issue. Modified Paths: -------------- rdesktop/trunk/constants.h rdesktop/trunk/rdesktop.c Modified: rdesktop/trunk/constants.h =================================================================== --- rdesktop/trunk/constants.h 2014-06-26 08:13:29 UTC (rev 1815) +++ rdesktop/trunk/constants.h 2014-06-27 13:15:24 UTC (rev 1816) @@ -321,7 +321,7 @@ #define RDP_LOGON_AUTO 0x0008 #define RDP_LOGON_NORMAL 0x0033 #define RDP_LOGON_COMPRESSION 0x0080 /* mppc compression with 8kB histroy buffer */ -#define RDP_LOGON_BLOB 0x0100 +#define RDP_LOGON_ENABLEWINDOWSKEY 0x0100 #define RDP_LOGON_COMPRESSION2 0x0200 /* rdp5 mppc compression with 64kB history buffer */ #define RDP_LOGON_LEAVE_AUDIO 0x2000 #define RDP_LOGON_PASSWORD_IS_SC_PIN 0x40000 Modified: rdesktop/trunk/rdesktop.c =================================================================== --- rdesktop/trunk/rdesktop.c 2014-06-26 08:13:29 UTC (rev 1815) +++ rdesktop/trunk/rdesktop.c 2014-06-27 13:15:24 UTC (rev 1816) @@ -554,7 +554,7 @@ act.sa_flags = 0; sigaction(SIGPIPE, &act, NULL); - flags = RDP_LOGON_NORMAL; + flags = RDP_LOGON_NORMAL | RDP_LOGON_ENABLEWINDOWSKEY; prompt_password = False; g_seamless_spawn_cmd[0] = domain[0] = g_password[0] = shell[0] = directory[0] = 0; g_embed_wnd = 0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <he...@us...> - 2014-06-27 13:49:27
|
Revision: 1817 http://sourceforge.net/p/rdesktop/code/1817 Author: hean01 Date: 2014-06-27 13:49:19 +0000 (Fri, 27 Jun 2014) Log Message: ----------- Updates all constants for TS_INFO_PACKET flags to much names in specification. Modified Paths: -------------- rdesktop/trunk/constants.h rdesktop/trunk/rdesktop.c Modified: rdesktop/trunk/constants.h =================================================================== --- rdesktop/trunk/constants.h 2014-06-27 13:15:24 UTC (rev 1816) +++ rdesktop/trunk/constants.h 2014-06-27 13:49:19 UTC (rev 1817) @@ -318,13 +318,16 @@ #define RDP_SOURCE "MSTSC" /* Logon flags */ -#define RDP_LOGON_AUTO 0x0008 -#define RDP_LOGON_NORMAL 0x0033 -#define RDP_LOGON_COMPRESSION 0x0080 /* mppc compression with 8kB histroy buffer */ -#define RDP_LOGON_ENABLEWINDOWSKEY 0x0100 -#define RDP_LOGON_COMPRESSION2 0x0200 /* rdp5 mppc compression with 64kB history buffer */ -#define RDP_LOGON_LEAVE_AUDIO 0x2000 -#define RDP_LOGON_PASSWORD_IS_SC_PIN 0x40000 +#define RDP_INFO_MOUSE 0x00000001 +#define RDP_INFO_DISABLECTRLALTDEL 0x00000002 +#define RDP_INFO_AUTOLOGON 0x00000008 +#define RDP_INFO_UNICODE 0x00000010 +#define RDP_INFO_MAXIMIZESHELL 0x00000020 +#define RDP_INFO_COMPRESSION 0x00000080 /* mppc compression with 8kB histroy buffer */ +#define RDP_INFO_ENABLEWINDOWSKEY 0x00000100 +#define RDP_INFO_COMPRESSION2 0x00000200 /* rdp5 mppc compression with 64kB history buffer */ +#define RDP_INFO_REMOTE_CONSOLE_AUDIO 0x00002000 +#define RDP_INFO_PASSWORD_IS_SC_PIN 0x00040000 #define RDP5_DISABLE_NOTHING 0x00 #define RDP5_NO_WALLPAPER 0x01 Modified: rdesktop/trunk/rdesktop.c =================================================================== --- rdesktop/trunk/rdesktop.c 2014-06-27 13:15:24 UTC (rev 1816) +++ rdesktop/trunk/rdesktop.c 2014-06-27 13:49:19 UTC (rev 1817) @@ -554,7 +554,11 @@ act.sa_flags = 0; sigaction(SIGPIPE, &act, NULL); - flags = RDP_LOGON_NORMAL | RDP_LOGON_ENABLEWINDOWSKEY; + /* setup default flags for TS_INFO_PACKET */ + flags = RDP_INFO_MOUSE | RDP_INFO_DISABLECTRLALTDEL + | RDP_INFO_UNICODE | RDP_INFO_MAXIMIZESHELL + | RDP_INFO_ENABLEWINDOWSKEY; + prompt_password = False; g_seamless_spawn_cmd[0] = domain[0] = g_password[0] = shell[0] = directory[0] = 0; g_embed_wnd = 0; @@ -624,7 +628,7 @@ } STRNCPY(g_password, optarg, sizeof(g_password)); - flags |= RDP_LOGON_AUTO; + flags |= RDP_INFO_AUTOLOGON; /* try to overwrite argument so it won't appear in ps */ p = optarg; @@ -772,7 +776,7 @@ case 'z': DEBUG(("rdp compression enabled\n")); - flags |= (RDP_LOGON_COMPRESSION | RDP_LOGON_COMPRESSION2); + flags |= (RDP_INFO_COMPRESSION | RDP_INFO_COMPRESSION2); break; case 'x': @@ -812,7 +816,7 @@ while ((p = next_arg(optarg, ','))) { if (str_startswith(optarg, "remote")) - flags |= RDP_LOGON_LEAVE_AUDIO; + flags |= RDP_INFO_REMOTE_CONSOLE_AUDIO; if (str_startswith(optarg, "local")) #ifdef WITH_RDPSND @@ -1059,7 +1063,7 @@ if (prompt_password && read_password(g_password, sizeof(g_password))) - flags |= RDP_LOGON_AUTO; + flags |= RDP_INFO_AUTOLOGON; if (g_title[0] == 0) { @@ -1118,7 +1122,7 @@ g_username = (char *) xmalloc(strlen(g_redirect_username) + 1); STRNCPY(g_username, g_redirect_username, strlen(g_redirect_username) + 1); STRNCPY(server, g_redirect_server, sizeof(server)); - flags |= RDP_LOGON_AUTO; + flags |= RDP_INFO_AUTOLOGON; fprintf(stderr, "Redirected to %s@%s session %d.\n", g_redirect_username, g_redirect_server, g_redirect_session_id); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <he...@us...> - 2014-07-02 08:25:13
|
Revision: 1820 http://sourceforge.net/p/rdesktop/code/1820 Author: hean01 Date: 2014-07-02 08:25:07 +0000 (Wed, 02 Jul 2014) Log Message: ----------- Added seamless_reset_state() and use it whenever a new window is created. This fixes issues with seamless protocol parser between reconnects. Modified Paths: -------------- rdesktop/trunk/proto.h rdesktop/trunk/seamless.c rdesktop/trunk/xwin.c Modified: rdesktop/trunk/proto.h =================================================================== --- rdesktop/trunk/proto.h 2014-07-02 08:05:30 UTC (rev 1819) +++ rdesktop/trunk/proto.h 2014-07-02 08:25:07 UTC (rev 1820) @@ -336,6 +336,7 @@ RD_BOOL lspci_init(void); /* seamless.c */ RD_BOOL seamless_init(void); +void seamless_reset_state(void); unsigned int seamless_send_sync(void); unsigned int seamless_send_state(unsigned long id, unsigned int state, unsigned long flags); unsigned int seamless_send_position(unsigned long id, int x, int y, int width, int height, Modified: rdesktop/trunk/seamless.c =================================================================== --- rdesktop/trunk/seamless.c 2014-07-02 08:05:30 UTC (rev 1819) +++ rdesktop/trunk/seamless.c 2014-07-02 08:25:07 UTC (rev 1820) @@ -32,6 +32,7 @@ extern RD_BOOL g_seamless_rdp; static VCHANNEL *seamless_channel; static unsigned int seamless_serial; +static char *seamless_rest = NULL; static char icon_buf[1024]; static char * @@ -373,7 +374,6 @@ seamless_process(STREAM s) { unsigned int pkglen; - static char *rest = NULL; char *buf; pkglen = s->end - s->p; @@ -385,7 +385,7 @@ hexdump(s->p, pkglen); #endif - str_handle_lines(buf, &rest, seamless_line_handler, NULL); + str_handle_lines(buf, &seamless_rest, seamless_line_handler, NULL); xfree(buf); } @@ -405,6 +405,15 @@ return (seamless_channel != NULL); } +void +seamless_reset_state(void) +{ + if (seamless_rest != NULL) + { + xfree(seamless_rest); + seamless_rest = NULL; + } +} static unsigned int seamless_send(const char *command, const char *format, ...) Modified: rdesktop/trunk/xwin.c =================================================================== --- rdesktop/trunk/xwin.c 2014-07-02 08:05:30 UTC (rev 1819) +++ rdesktop/trunk/xwin.c 2014-07-02 08:25:07 UTC (rev 1820) @@ -2121,6 +2121,7 @@ if (g_seamless_rdp) { + seamless_reset_state(); seamless_restack_test(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <he...@us...> - 2014-07-03 10:42:12
|
Revision: 1822 http://sourceforge.net/p/rdesktop/code/1822 Author: hean01 Date: 2014-07-03 10:42:04 +0000 (Thu, 03 Jul 2014) Log Message: ----------- Document the new seamless protocol command PERSISTENT and implement the usage of the new command in rdesktop. If a seamless command is specified the persistent mode of the session will be changed to non-persistent. Modified Paths: -------------- rdesktop/trunk/doc/seamlessrdp-channel.txt rdesktop/trunk/proto.h rdesktop/trunk/rdesktop.c rdesktop/trunk/seamless.c rdesktop/trunk/xwin.c Modified: rdesktop/trunk/doc/seamlessrdp-channel.txt =================================================================== --- rdesktop/trunk/doc/seamlessrdp-channel.txt 2014-07-03 10:30:42 UTC (rev 1821) +++ rdesktop/trunk/doc/seamlessrdp-channel.txt 2014-07-03 10:42:04 UTC (rev 1822) @@ -294,6 +294,22 @@ order, just as if the window was created. Note that a TITLE may also, optionally, be sent before the STATE. +PERSISTENT +---------- + +Change persistent mode for the session. + +Syntax: + PERSISTENT,<SERIAL>,<ENABLE> + +A seamless session always starts in persistent mode. This means that +the session will not terminate if all applications is closed. +Upon re-connection to a session, the session will reset to persistent +mode and client needs to change this if non persistent mode is wanted. +If a persistent session not have any application running and is in +disconnected state, it will terminate after a timeout is reached that +matches the lifetime of the re-connection cookie. + POSITION -------- Modified: rdesktop/trunk/proto.h =================================================================== --- rdesktop/trunk/proto.h 2014-07-03 10:30:42 UTC (rev 1821) +++ rdesktop/trunk/proto.h 2014-07-03 10:42:04 UTC (rev 1822) @@ -346,6 +346,7 @@ unsigned int seamless_send_focus(unsigned long id, unsigned long flags); unsigned int seamless_send_destroy(unsigned long id); unsigned int seamless_send_spawn(char *cmd); +unsigned int seamless_send_persistent(RD_BOOL); /* scard.c */ void scard_lock(int lock); Modified: rdesktop/trunk/rdesktop.c =================================================================== --- rdesktop/trunk/rdesktop.c 2014-07-03 10:30:42 UTC (rev 1821) +++ rdesktop/trunk/rdesktop.c 2014-07-03 10:42:04 UTC (rev 1822) @@ -109,6 +109,7 @@ RD_BOOL g_use_password_as_pin = False; char g_seamless_shell[512]; char g_seamless_spawn_cmd[512]; +RD_BOOL g_seamless_persistent_mode = True; RD_BOOL g_user_quit = False; uint32 g_embed_wnd; uint32 g_rdp5_performanceflags = @@ -614,6 +615,7 @@ case 's': STRNCPY(shell, optarg, sizeof(shell)); + g_seamless_persistent_mode = False; break; case 'c': Modified: rdesktop/trunk/seamless.c =================================================================== --- rdesktop/trunk/seamless.c 2014-07-03 10:30:42 UTC (rev 1821) +++ rdesktop/trunk/seamless.c 2014-07-03 10:42:04 UTC (rev 1822) @@ -3,7 +3,7 @@ Seamless Windows support Copyright 2005-2008 Peter Astrand <as...@ce...> for Cendio AB Copyright 2007-2008 Pierre Ossman <os...@ce...> for Cendio AB - Copyright 2013 Henrik Andersson <he...@ce...> for Cendio AB + Copyright 2013-2014 Henrik Andersson <he...@ce...> for Cendio AB 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 @@ -542,3 +542,15 @@ return res; } + +unsigned int +seamless_send_persistent(RD_BOOL enable) +{ + unsigned int res; + if (!g_seamless_rdp) + return (unsigned int) -1; + printf("%s persitent seamless mode.\n", enable?"Enable":"Disable"); + res = seamless_send("PERSISTENT", "%d", enable); + + return res; +} Modified: rdesktop/trunk/xwin.c =================================================================== --- rdesktop/trunk/xwin.c 2014-07-03 10:30:42 UTC (rev 1821) +++ rdesktop/trunk/xwin.c 2014-07-03 10:42:04 UTC (rev 1822) @@ -95,6 +95,7 @@ static RD_BOOL g_seamless_hidden = False; /* Desktop is hidden on server */ static RD_BOOL g_seamless_broken_restack = False; /* WM does not properly restack */ extern RD_BOOL g_seamless_rdp; +extern RD_BOOL g_seamless_persistent_mode; extern uint32 g_embed_wnd; RD_BOOL g_enable_compose = False; @@ -3827,6 +3828,8 @@ seamless_send_spawn(g_seamless_spawn_cmd); g_seamless_spawn_cmd[0] = 0; } + + seamless_send_persistent(g_seamless_persistent_mode); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <he...@us...> - 2014-08-27 12:20:07
|
Revision: 1825 http://sourceforge.net/p/rdesktop/code/1825 Author: hean01 Date: 2014-08-27 12:19:59 +0000 (Wed, 27 Aug 2014) Log Message: ----------- Make sure we handle redirection PDU packet received within rdp_connect() loop. Fixes silent exits of rdesktop when receiving a redirection PDU before license handling which is a corner case appeared while using CredSSP+Kerberos. Modified Paths: -------------- rdesktop/trunk/rdesktop.c rdesktop/trunk/rdp.c Modified: rdesktop/trunk/rdesktop.c =================================================================== --- rdesktop/trunk/rdesktop.c 2014-08-27 12:15:21 UTC (rev 1824) +++ rdesktop/trunk/rdesktop.c 2014-08-27 12:19:59 UTC (rev 1825) @@ -1133,6 +1133,7 @@ and therefor we just clear this error before we connect to redirected server. */ g_network_error = False; + g_redirect = False; } ui_init_connection(); @@ -1157,6 +1158,8 @@ continue; } + if (g_redirect) + continue; /* By setting encryption to False here, we have an encrypted login packet but unencrypted transfer of other packets */ @@ -1169,7 +1172,6 @@ tcp_run_ui(True); deactivated = False; - g_redirect = False; g_reconnect_loop = False; rdp_main_loop(&deactivated, &ext_disc_reason); Modified: rdesktop/trunk/rdp.c =================================================================== --- rdesktop/trunk/rdp.c 2014-08-27 12:15:21 UTC (rev 1824) +++ rdesktop/trunk/rdp.c 2014-08-27 12:19:59 UTC (rev 1825) @@ -1752,6 +1752,9 @@ if (!rdp_loop(&deactivated, &ext_disc_reason)) return False; + + if (g_redirect) + return True; } return True; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <he...@us...> - 2014-09-09 12:34:17
|
Revision: 1828 http://sourceforge.net/p/rdesktop/code/1828 Author: hean01 Date: 2014-09-09 12:34:09 +0000 (Tue, 09 Sep 2014) Log Message: ----------- Make use of constants defined in specification instead of magic character numbers found in protocol stream for clarity. Modified Paths: -------------- rdesktop/trunk/constants.h rdesktop/trunk/rdpdr.c Modified: rdesktop/trunk/constants.h =================================================================== --- rdesktop/trunk/constants.h 2014-09-02 10:24:40 UTC (rev 1827) +++ rdesktop/trunk/constants.h 2014-09-09 12:34:09 UTC (rev 1828) @@ -450,6 +450,24 @@ #define TSSNDCAPS_VOLUME 0x00000002 /* RDPDR constants */ + +#define RDPDR_CTYP_CORE 0x4472 +#define RDPDR_CTYP_PRN 0x5052 + +#define PAKID_CORE_SERVER_ANNOUNCE 0x496e +#define PAKID_CORE_CLIENTID_CONFIRM 0x4343 +#define PAKID_CORE_CLIENT_NAME 0x434e +#define PAKID_CORE_DEVICE_LIST_ANNOUNCE 0x4441 +#define PAKID_CORE_DEVICE_REPLY 0x6472 +#define PAKID_CORE_DEVICE_IOREQUEST 0x4952 +#define PAKID_CORE_DEVICE_IOCOMPLETION 0x4943 +#define PAKID_CORE_SERVER_CAPABILITY 0x5350 +#define PAKID_CORE_CLIENT_CAPABILITY 0x4350 +#define PAKID_CORE_DEVICELIST_REMOVE 0x444d +#define PAKID_PRN_CACHE_DATA 0x5043 +#define PAKID_CORE_USER_LOGGEDON 0x554c +#define PAKID_PRN_USING_XPS 0x5543 + #define RDPDR_MAX_DEVICES 0x10 #define DEVICE_TYPE_SERIAL 0x01 #define DEVICE_TYPE_PARALLEL 0x02 Modified: rdesktop/trunk/rdpdr.c =================================================================== --- rdesktop/trunk/rdpdr.c 2014-09-02 10:24:40 UTC (rev 1827) +++ rdesktop/trunk/rdpdr.c 2014-09-09 12:34:09 UTC (rev 1828) @@ -2,7 +2,7 @@ rdesktop: A Remote Desktop Protocol client. Copyright (C) Matthew Chapman <matthewc.unsw.edu.au> 1999-2008 Copyright 2004-2011 Peter Astrand <as...@ce...> for Cendio AB - Copyright 2010-2013 Henrik Andersson <he...@ce...> for Cendio AB + Copyright 2010-2014 Henrik Andersson <he...@ce...> for Cendio AB 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 @@ -188,11 +188,10 @@ static void rdpdr_send_connect(void) { - uint8 magic[4] = "rDCC"; STREAM s; - s = channel_init(rdpdr_channel, 12); - out_uint8a(s, magic, 4); + out_uint16_le(s, RDPDR_CTYP_CORE); + out_uint16_le(s, PAKID_CORE_CLIENTID_CONFIRM); out_uint16_le(s, 1); /* unknown */ out_uint16_le(s, 5); out_uint32_be(s, 0x815ed39d); /* IP address (use 127.0.0.1) 0x815ed39d */ @@ -204,7 +203,6 @@ static void rdpdr_send_name(void) { - uint8 magic[4] = "rDNC"; STREAM s; uint32 hostlen; @@ -215,7 +213,8 @@ hostlen = (strlen(g_rdpdr_clientname) + 1) * 2; s = channel_init(rdpdr_channel, 16 + hostlen); - out_uint8a(s, magic, 4); + out_uint16_le(s, RDPDR_CTYP_CORE); + out_uint16_le(s, PAKID_CORE_CLIENT_NAME); out_uint16_le(s, 0x63); /* unknown */ out_uint16_le(s, 0x72); out_uint32(s, 0); @@ -256,15 +255,15 @@ static void rdpdr_send_available(void) { - - uint8 magic[4] = "rDAD"; uint32 driverlen, printerlen, bloblen; int i; STREAM s; PRINTER *printerinfo; s = channel_init(rdpdr_channel, announcedata_size()); - out_uint8a(s, magic, 4); + out_uint16_le(s, RDPDR_CTYP_CORE); + out_uint16_le(s, PAKID_CORE_DEVICE_LIST_ANNOUNCE); + out_uint32_le(s, g_num_devices); for (i = 0; i < g_num_devices; i++) @@ -317,14 +316,14 @@ rdpdr_send_completion(uint32 device, uint32 id, uint32 status, uint32 result, uint8 * buffer, uint32 length) { - uint8 magic[4] = "rDCI"; STREAM s; #ifdef WITH_SCARD scard_lock(SCARD_LOCK_RDPDR); #endif s = channel_init(rdpdr_channel, 20 + length); - out_uint8a(s, magic, 4); + out_uint16_le(s, RDPDR_CTYP_CORE); + out_uint16_le(s, PAKID_CORE_DEVICE_IOCOMPLETION); out_uint32_le(s, device); out_uint32_le(s, id); out_uint32_le(s, status); @@ -756,11 +755,10 @@ static void rdpdr_send_clientcapability(void) { - uint8 magic[4] = "rDPC"; STREAM s; - s = channel_init(rdpdr_channel, 0x50); - out_uint8a(s, magic, 4); + out_uint16_le(s, RDPDR_CTYP_CORE); + out_uint16_le(s, PAKID_CORE_CLIENT_CAPABILITY); out_uint32_le(s, 5); /* count */ out_uint16_le(s, 1); /* first */ out_uint16_le(s, 0x28); /* length */ @@ -797,58 +795,58 @@ rdpdr_process(STREAM s) { uint32 handle; - uint8 *magic; + uint16 component; + uint16 pakid; #if WITH_DEBUG_RDP5 printf("--- rdpdr_process ---\n"); hexdump(s->p, s->end - s->p); #endif - in_uint8p(s, magic, 4); - if ((magic[0] == 'r') && (magic[1] == 'D')) + in_uint16(s, component); + in_uint16(s, pakid); + + if (component == RDPDR_CTYP_CORE) { - if ((magic[2] == 'R') && (magic[3] == 'I')) + switch (pakid) { - rdpdr_process_irp(s); - return; - } - if ((magic[2] == 'n') && (magic[3] == 'I')) - { - rdpdr_send_connect(); - rdpdr_send_name(); - return; - } - if ((magic[2] == 'C') && (magic[3] == 'C')) - { - /* connect from server */ - rdpdr_send_clientcapability(); - rdpdr_send_available(); - return; - } - if ((magic[2] == 'r') && (magic[3] == 'd')) - { - /* connect to a specific resource */ - in_uint32(s, handle); + case PAKID_CORE_DEVICE_IOREQUEST: + rdpdr_process_irp(s); + break; + + case PAKID_CORE_SERVER_ANNOUNCE: + rdpdr_send_connect(); + rdpdr_send_name(); + break; + + case PAKID_CORE_CLIENTID_CONFIRM: + rdpdr_send_clientcapability(); + rdpdr_send_available(); + break; + + case PAKID_CORE_DEVICE_REPLY: + in_uint32(s, handle); #if WITH_DEBUG_RDP5 - DEBUG(("RDPDR: Server connected to resource %d\n", handle)); + DEBUG(("RDPDR: Server connected to resource %d\n", handle)); #endif - return; + break; + + case PAKID_CORE_SERVER_CAPABILITY: + break; + + default: + unimpl("RDPDR pakid 0x%x of component 0x%x\n", pakid, component); + break; + } - if ((magic[2] == 'P') && (magic[3] == 'S')) - { - /* server capability */ - return; - } } - if ((magic[0] == 'R') && (magic[1] == 'P')) + else if (component == RDPDR_CTYP_PRN) { - if ((magic[2] == 'C') && (magic[3] == 'P')) - { + if (pakid == PAKID_PRN_CACHE_DATA) printercache_process(s); - return; - } } - unimpl("RDPDR packet type %c%c%c%c\n", magic[0], magic[1], magic[2], magic[3]); + else + unimpl("RDPDR component 0x%x\n", component); } RD_BOOL This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <he...@us...> - 2014-09-11 11:54:55
|
Revision: 1836 http://sourceforge.net/p/rdesktop/code/1836 Author: hean01 Date: 2014-09-11 11:54:46 +0000 (Thu, 11 Sep 2014) Log Message: ----------- Fixes a bug with Windows Server 2012 r2 and smartcard redirection were the RDPDR channel is shutdown by server. The RDPDR channel is shutdown by server when responses from abdonend iorequests are received on a reinitialized RDPDR channel. This fix adds epochs for RDPDR channel and tags iorequest to specific epoch to handle abdonend iorequest. Revision Links: -------------- http://sourceforge.net/p/rdesktop/code/2 Modified Paths: -------------- rdesktop/trunk/proto.h rdesktop/trunk/rdesktop.c rdesktop/trunk/rdpdr.c rdesktop/trunk/scard.c rdesktop/trunk/scard.h Modified: rdesktop/trunk/proto.h =================================================================== --- rdesktop/trunk/proto.h 2014-09-11 11:15:46 UTC (rev 1835) +++ rdesktop/trunk/proto.h 2014-09-11 11:54:46 UTC (rev 1836) @@ -352,7 +352,7 @@ void scard_lock(int lock); void scard_unlock(int lock); int scard_enum_devices(uint32 * id, char *optarg); -void scardSetInfo(uint32 device, uint32 id, uint32 bytes_out); +void scardSetInfo(uint32 epoch, uint32 device, uint32 id, uint32 bytes_out); void scard_reset_state(); /* *INDENT-OFF* */ Modified: rdesktop/trunk/rdesktop.c =================================================================== --- rdesktop/trunk/rdesktop.c 2014-09-11 11:15:46 UTC (rev 1835) +++ rdesktop/trunk/rdesktop.c 2014-09-11 11:54:46 UTC (rev 1836) @@ -557,8 +557,7 @@ /* setup default flags for TS_INFO_PACKET */ flags = RDP_INFO_MOUSE | RDP_INFO_DISABLECTRLALTDEL - | RDP_INFO_UNICODE | RDP_INFO_MAXIMIZESHELL - | RDP_INFO_ENABLEWINDOWSKEY; + | RDP_INFO_UNICODE | RDP_INFO_MAXIMIZESHELL | RDP_INFO_ENABLEWINDOWSKEY; prompt_password = False; g_seamless_spawn_cmd[0] = domain[0] = g_password[0] = shell[0] = directory[0] = 0; @@ -790,15 +789,18 @@ } else if (str_startswith(optarg, "b")) /* broadband */ { - g_rdp5_performanceflags = RDP5_NO_CURSOR_SHADOW | RDP5_NO_WALLPAPER; + g_rdp5_performanceflags = + RDP5_NO_CURSOR_SHADOW | RDP5_NO_WALLPAPER; } else if (str_startswith(optarg, "l")) /* lan */ { - g_rdp5_performanceflags = RDP5_NO_CURSOR_SHADOW | RDP5_DISABLE_NOTHING; + g_rdp5_performanceflags = + RDP5_NO_CURSOR_SHADOW | RDP5_DISABLE_NOTHING; } else { - g_rdp5_performanceflags = RDP5_NO_CURSOR_SHADOW | strtol(optarg, NULL, 16); + g_rdp5_performanceflags = + RDP5_NO_CURSOR_SHADOW | strtol(optarg, NULL, 16); } break; Modified: rdesktop/trunk/rdpdr.c =================================================================== --- rdesktop/trunk/rdpdr.c 2014-09-11 11:15:46 UTC (rev 1835) +++ rdesktop/trunk/rdpdr.c 2014-09-11 11:54:46 UTC (rev 1836) @@ -68,6 +68,7 @@ extern RD_BOOL g_notify_stamp; static VCHANNEL *rdpdr_channel; +static uint32 g_epoch; /* If select() times out, the request for the device with handle g_min_timeout_fd is aborted */ RD_NTHANDLE g_min_timeout_fd; @@ -695,7 +696,7 @@ out.size = sizeof(buffer); #ifdef WITH_SCARD - scardSetInfo(device, id, bytes_out + 0x14); + scardSetInfo(g_epoch, device, id, bytes_out + 0x14); #endif status = fns->device_control(file, request, s, &out); result = buffer_len = out.p - out.data; @@ -823,6 +824,7 @@ if server version is < 12 */ if (vmin < 0x000c) g_client_id = 0x815ed39d; /* IP address (use 127.0.0.1) 0x815ed39d */ + g_epoch++; rdpdr_send_client_announce_reply(); rdpdr_send_client_name_request(); Modified: rdesktop/trunk/scard.c =================================================================== --- rdesktop/trunk/scard.c 2014-09-11 11:15:46 UTC (rev 1835) +++ rdesktop/trunk/scard.c 2014-09-11 11:54:46 UTC (rev 1836) @@ -63,7 +63,7 @@ static pthread_mutex_t **scard_mutex = NULL; -static uint32 curDevice = 0, curId = 0, curBytesOut = 0; +static uint32 curEpoch = 0, curDevice = 0, curId = 0, curBytesOut = 0; static PSCNameMapRec nameMapList = NULL; static int nameMapCount = 0; @@ -87,11 +87,12 @@ #endif /* MAKE_PROTO */ void -scardSetInfo(uint32 device, uint32 id, uint32 bytes_out) +scardSetInfo(uint32 epoch, uint32 device, uint32 id, uint32 bytes_out) { curDevice = device; curId = id; curBytesOut = bytes_out; + curEpoch = epoch; } #ifndef MAKE_PROTO @@ -2456,6 +2457,7 @@ data->memHandle = lcHandle; data->device = curDevice; data->id = curId; + data->epoch = curEpoch; data->handle = handle; data->request = request; data->in = duplicateStream(&(data->memHandle), in, 0, SC_TRUE); @@ -2527,7 +2529,14 @@ size_t buffer_len = 0; scard_device_control(data->handle, data->request, data->in, data->out); buffer_len = (size_t) data->out->p - (size_t) data->out->data; - rdpdr_send_completion(data->device, data->id, 0, buffer_len, data->out->data, buffer_len); + + /* if iorequest belongs to another epoch, don't send response + back to server due to it's considered as abdonend. + */ + if (data->epoch == curEpoch) + rdpdr_send_completion(data->device, data->id, 0, buffer_len, data->out->data, + buffer_len); + SC_destroyThreadData(data); } Modified: rdesktop/trunk/scard.h =================================================================== --- rdesktop/trunk/scard.h 2014-09-11 11:15:46 UTC (rev 1835) +++ rdesktop/trunk/scard.h 2014-09-11 11:54:46 UTC (rev 1836) @@ -154,6 +154,7 @@ { uint32 device; uint32 id; + uint32 epoch; RD_NTHANDLE handle; uint32 request; STREAM in; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <he...@us...> - 2014-10-31 11:39:07
|
Revision: 1837 http://sourceforge.net/p/rdesktop/code/1837 Author: hean01 Date: 2014-10-31 11:39:04 +0000 (Fri, 31 Oct 2014) Log Message: ----------- Updated CHangeLog and bumped version to 1.8.3 Modified Paths: -------------- rdesktop/trunk/configure.ac rdesktop/trunk/doc/ChangeLog rdesktop/trunk/rdesktop.spec Modified: rdesktop/trunk/configure.ac =================================================================== --- rdesktop/trunk/configure.ac 2014-09-11 11:54:46 UTC (rev 1836) +++ rdesktop/trunk/configure.ac 2014-10-31 11:39:04 UTC (rev 1837) @@ -1,4 +1,4 @@ -AC_INIT(rdesktop, 1.8.2post) +AC_INIT(rdesktop, 1.8.3) AC_CONFIG_SRCDIR([rdesktop.c]) Modified: rdesktop/trunk/doc/ChangeLog =================================================================== --- rdesktop/trunk/doc/ChangeLog 2014-09-11 11:54:46 UTC (rev 1836) +++ rdesktop/trunk/doc/ChangeLog 2014-10-31 11:39:04 UTC (rev 1837) @@ -1,3 +1,24 @@ +rdesktop (1.8.3) + * Added a persistent mode used with SeamlessRDP + * Added US international keyboard layout with dead keys + * Code cleanup to match specifications, use constants defined + instead of magic numbers, remove of dead code + * Fix regression with failed connection and a invalid licensing + message, introduced in 1.8.2 + * Fix issue with Non ASCII user / password when using CredSSP + * Fix issues using smartcard redirection with Windows 2012 R2 + * Fix issue with windows key functionality + * Fix memory corruption when using rdp_out_unistr() + * Fix workaround for the lack of support for alpha cursors + * Fix silent exit when redirected when using CredSSP + * Fix crash when starting rdesktop without domain specified + while using CredSSP + * Fix issue in SeamlessRDP protocol parser upon reconnect + * Fix issue were a new SeamlessRDP application is respawned + upon a reconnection + + -- Henrik Andersson <he...@us...> 2014-10-31 + rdesktop (1.8.2) * Support enhanced server redirection (Session broker 2012) * Support License Error Alert PDU Modified: rdesktop/trunk/rdesktop.spec =================================================================== --- rdesktop/trunk/rdesktop.spec 2014-09-11 11:54:46 UTC (rev 1836) +++ rdesktop/trunk/rdesktop.spec 2014-10-31 11:39:04 UTC (rev 1837) @@ -1,6 +1,6 @@ Summary: Remote Desktop Protocol client Name: rdesktop -Version: 1.8.2post +Version: 1.8.3 Release: 1 License: GPL; see COPYING Group: Applications/Communications This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <he...@us...> - 2014-11-03 11:34:56
|
Revision: 1839 http://sourceforge.net/p/rdesktop/code/1839 Author: hean01 Date: 2014-11-03 11:34:49 +0000 (Mon, 03 Nov 2014) Log Message: ----------- Bump trunk version to 1.8.3post Modified Paths: -------------- rdesktop/trunk/configure.ac rdesktop/trunk/rdesktop.spec Modified: rdesktop/trunk/configure.ac =================================================================== --- rdesktop/trunk/configure.ac 2014-10-31 12:06:37 UTC (rev 1838) +++ rdesktop/trunk/configure.ac 2014-11-03 11:34:49 UTC (rev 1839) @@ -1,4 +1,4 @@ -AC_INIT(rdesktop, 1.8.3) +AC_INIT(rdesktop, 1.8.3post) AC_CONFIG_SRCDIR([rdesktop.c]) Modified: rdesktop/trunk/rdesktop.spec =================================================================== --- rdesktop/trunk/rdesktop.spec 2014-10-31 12:06:37 UTC (rev 1838) +++ rdesktop/trunk/rdesktop.spec 2014-11-03 11:34:49 UTC (rev 1839) @@ -1,6 +1,6 @@ Summary: Remote Desktop Protocol client Name: rdesktop -Version: 1.8.3 +Version: 1.8.3post Release: 1 License: GPL; see COPYING Group: Applications/Communications This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <he...@us...> - 2014-11-19 07:44:23
|
Revision: 1842 http://sourceforge.net/p/rdesktop/code/1842 Author: hean01 Date: 2014-11-19 07:44:18 +0000 (Wed, 19 Nov 2014) Log Message: ----------- Apply patch #218 Fixes compilation of rdesktop on IRIX Modified Paths: -------------- rdesktop/trunk/rdpsnd_sgi.c rdesktop/trunk/xkeymap.c Modified: rdesktop/trunk/rdpsnd_sgi.c =================================================================== --- rdesktop/trunk/rdpsnd_sgi.c 2014-11-10 14:03:29 UTC (rev 1841) +++ rdesktop/trunk/rdpsnd_sgi.c 2014-11-19 07:44:18 UTC (rev 1842) @@ -20,8 +20,10 @@ */ #include "rdesktop.h" +#include "rdpsnd.h" #include <errno.h> #include <dmedia/audio.h> +#include <unistd.h> /* #define IRIX_DEBUG 1 */ @@ -253,7 +255,6 @@ { struct audio_packet *packet; ssize_t len; - unsigned int i; STREAM out; int gf; @@ -263,7 +264,7 @@ return; packet = rdpsnd_queue_current_packet(); - out = &packet->s; + out = (STREAM)(void *)&(packet->s); len = out->end - out->p; Modified: rdesktop/trunk/xkeymap.c =================================================================== --- rdesktop/trunk/xkeymap.c 2014-11-10 14:03:29 UTC (rev 1841) +++ rdesktop/trunk/xkeymap.c 2014-11-19 07:44:18 UTC (rev 1842) @@ -919,7 +919,7 @@ void restore_remote_modifiers(uint32 ev_time, uint8 scancode) { - key_translation dummy = { }; + key_translation dummy = { 0 }; if (is_modifier(scancode)) return; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |