diff options
author | Laxmikant Rashinkar <LK.Rashinkar@gmail.com> | 2013-04-26 18:55:49 -0700 |
---|---|---|
committer | Laxmikant Rashinkar <LK.Rashinkar@gmail.com> | 2013-04-26 18:55:49 -0700 |
commit | 284d4412453b73436a0bb551e04be8bfbce7a789 (patch) | |
tree | 2995fabf8d1b89ee9ba803a341c1dedbb6cbf98b /sesman | |
parent | 58158e6a3bed2044e5bddeaac1b16b88746fe6c1 (diff) | |
parent | 8acdc403e3105274641c225a11129e529e7ae667 (diff) | |
download | xrdp-proprietary-284d4412453b73436a0bb551e04be8bfbce7a789.tar.gz xrdp-proprietary-284d4412453b73436a0bb551e04be8bfbce7a789.zip |
Merge branch 'master' of github.com:FreeRDP/xrdp
Diffstat (limited to 'sesman')
-rw-r--r-- | sesman/chansrv/chansrv.c | 10 | ||||
-rw-r--r-- | sesman/chansrv/pulse/module-xrdp-sink.c | 14 | ||||
-rw-r--r-- | sesman/chansrv/pulse/pulse-notes.txt | 47 | ||||
-rw-r--r-- | sesman/libscp/libscp_tcp.c | 14 |
4 files changed, 59 insertions, 26 deletions
diff --git a/sesman/chansrv/chansrv.c b/sesman/chansrv/chansrv.c index 74e2db4a..0f7ff042 100644 --- a/sesman/chansrv/chansrv.c +++ b/sesman/chansrv/chansrv.c @@ -1,7 +1,7 @@ /** * xrdp: A Remote Desktop Protocol server. * - * Copyright (C) Jay Sorg 2009-2012 + * Copyright (C) Jay Sorg 2009-2013 * Copyright (C) Laxmikant Rashinkar 2009-2012 * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -45,6 +45,7 @@ static int g_rdpsnd_index = -1; static int g_rdpdr_index = -1; static int g_rail_index = -1; static int g_drdynvc_index = -1; +static int g_sent = 0; /* if sent data to xrdp, waiting response */ /* state info for dynamic virtual channels */ static struct xrdp_api_data *g_dvc_channels[MAX_DVC_CHANNELS]; @@ -149,6 +150,7 @@ send_data_from_chan_item(struct chan_item *chan_item) s_mark_end(s); LOGM((LOG_LEVEL_DEBUG, "chansrv::send_channel_data: -- " "size %d chan_flags 0x%8.8x", size, chan_flags)); + g_sent = 1; error = trans_force_write(g_con_trans); if (error != 0) @@ -214,7 +216,10 @@ send_channel_data(int chan_id, char *data, int size) if (g_chan_items[index].id == chan_id) { add_data_to_chan_item(g_chan_items + index, data, size); - check_chan_items(); + if (g_sent == 0) + { + check_chan_items(); + } return 0; } } @@ -478,6 +483,7 @@ static int APP_CC process_message_channel_data_response(struct stream *s) { LOG(10, ("process_message_channel_data_response:")); + g_sent = 0; check_chan_items(); return 0; } diff --git a/sesman/chansrv/pulse/module-xrdp-sink.c b/sesman/chansrv/pulse/module-xrdp-sink.c index 017d757e..92f4b674 100644 --- a/sesman/chansrv/pulse/module-xrdp-sink.c +++ b/sesman/chansrv/pulse/module-xrdp-sink.c @@ -262,7 +262,6 @@ static int data_send(struct userdata *u, pa_memchunk *chunk) { char *data; int bytes; int sent; - int display_num; int fd; struct header h; struct sockaddr_un s; @@ -276,9 +275,8 @@ static int data_send(struct userdata *u, pa_memchunk *chunk) { fd = socket(PF_LOCAL, SOCK_STREAM, 0); memset(&s, 0, sizeof(s)); s.sun_family = AF_UNIX; - display_num = get_display_num_from_display(getenv("DISPLAY")); bytes = sizeof(s.sun_path) - 1; - snprintf(s.sun_path, bytes, CHANSRV_PORT_STR, display_num); + snprintf(s.sun_path, bytes, CHANSRV_PORT_STR, u->display_num); pa_log("trying to conenct to %s", s.sun_path); if (connect(fd, (struct sockaddr *)&s, sizeof(struct sockaddr_un)) != 0) { @@ -296,15 +294,11 @@ static int data_send(struct userdata *u, pa_memchunk *chunk) { //pa_log("bytes %d", bytes); /* from rewind */ - if (u->skip_bytes > 0) - { - if (bytes > u->skip_bytes) - { + if (u->skip_bytes > 0) { + if (bytes > u->skip_bytes) { bytes -= u->skip_bytes; u->skip_bytes = 0; - } - else - { + } else { u->skip_bytes -= bytes; return bytes; } diff --git a/sesman/chansrv/pulse/pulse-notes.txt b/sesman/chansrv/pulse/pulse-notes.txt index 4a4b7273..b5d51572 100644 --- a/sesman/chansrv/pulse/pulse-notes.txt +++ b/sesman/chansrv/pulse/pulse-notes.txt @@ -4,7 +4,7 @@ Pulse audio notes. to see what version of PA is on your machine pulseaudio --version - +IMA ADPCM To build xrdp pulse sink, get the pulse source that most closely matches your version on @@ -25,3 +25,48 @@ autospawn = no daemon-binary = /bin/true xfreerdp -a 24 -z --plugin rdpsnd --data alsa:hw:0,0 -- 127.0.0.1 + + +to get ./configure on pulse source to run +apt-get install libsndfile1-dev +apt-get install libspeex-dev +apt-get install libspeexdsp-dev + +alsamixer +apt-get install alsa-utils + + +/etc/asound.conf +--------------------------------- +pcm.pulse { + type pulse +} + +ctl.pulse { + type pulse +} + +pcm.!default { + type pulse +} + +ctl.!default { + type pulse +} +--------------------------------- + + +/etc/pulse/default.pa +--------------------------------- +.nofail +.fail +load-module module-augment-properties +#load-module module-alsa-sink device=hw:0 +#load-module module-alsa-source device=hw:0 +#load-module module-pipe-sink +#load-module module-pipe-source +#load-module module-null-sink +load-module module-xrdp-sink +load-module module-native-protocol-unix +#load-module module-udev-detect tsched=0 +--------------------------------- diff --git a/sesman/libscp/libscp_tcp.c b/sesman/libscp/libscp_tcp.c index 29870563..30e8006c 100644 --- a/sesman/libscp/libscp_tcp.c +++ b/sesman/libscp/libscp_tcp.c @@ -26,12 +26,6 @@ #include "libscp_tcp.h" -#include <netinet/in.h> -#include <sys/socket.h> -#include <arpa/inet.h> -#include <stdlib.h> -#include <string.h> - extern struct log_config *s_log; /*****************************************************************************/ @@ -124,11 +118,5 @@ scp_tcp_force_send(int sck, char *data, int len) int DEFAULT_CC scp_tcp_bind(int sck, char *addr, char *port) { - struct sockaddr_in s; - - memset(&s, 0, sizeof(struct sockaddr_in)); - s.sin_family = AF_INET; - s.sin_port = htons(atoi(port)); - s.sin_addr.s_addr = inet_addr(addr); - return bind(sck, (struct sockaddr *)&s, sizeof(struct sockaddr_in)); + return g_tcp_bind_address(sck, port, addr); } |