summaryrefslogtreecommitdiffstats
path: root/xrdp
diff options
context:
space:
mode:
authorjsorg71 <jsorg71>2004-11-15 01:30:28 +0000
committerjsorg71 <jsorg71>2004-11-15 01:30:28 +0000
commit9c580f9a846f9db83508a1bd4b2d9a354d906fcf (patch)
treefbd192cc668f2583a446422b31c8fb422e079752 /xrdp
parent0be4f033922831d7173f86004ec0a0951a40f86d (diff)
downloadxrdp-proprietary-9c580f9a846f9db83508a1bd4b2d9a354d906fcf.tar.gz
xrdp-proprietary-9c580f9a846f9db83508a1bd4b2d9a354d906fcf.zip
started work on moduals
Diffstat (limited to 'xrdp')
-rw-r--r--xrdp/os_calls.c32
-rw-r--r--xrdp/xrdp.h4
-rw-r--r--xrdp/xrdp_process.c5
-rw-r--r--xrdp/xrdp_types.h1
4 files changed, 37 insertions, 5 deletions
diff --git a/xrdp/os_calls.c b/xrdp/os_calls.c
index 2b55bec0..164c93f3 100644
--- a/xrdp/os_calls.c
+++ b/xrdp/os_calls.c
@@ -30,6 +30,7 @@
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <sys/socket.h>
+#include <sys/un.h>
#include <sys/time.h>
#include <sys/types.h>
#endif
@@ -242,6 +243,15 @@ int g_tcp_socket(void)
}
/*****************************************************************************/
+int g_tcp_local_socket(void)
+{
+ int rv;
+
+ rv = socket(PF_LOCAL, SOCK_STREAM, 0);
+ return rv;
+}
+
+/*****************************************************************************/
void g_tcp_close(int sck)
{
#ifdef _WIN32
@@ -280,6 +290,17 @@ int g_tcp_bind(int sck, char* port)
}
/*****************************************************************************/
+int g_tcp_local_bind(int sck, char* port)
+{
+ struct sockaddr_un s;
+
+ memset(&s, 0, sizeof(struct sockaddr_un));
+ s.sun_family = AF_UNIX;
+ strcpy(s.sun_path, port);
+ return bind(sck, (struct sockaddr*)&s, sizeof(struct sockaddr_un));
+}
+
+/*****************************************************************************/
int g_tcp_listen(int sck)
{
return listen(sck, 2);
@@ -323,16 +344,21 @@ int g_tcp_last_error_would_block(int sck)
}
/*****************************************************************************/
-int g_tcp_select(int sck)
+int g_tcp_select(int sck1, int sck2)
{
fd_set rfds;
struct timeval time;
+ int max;
time.tv_sec = 0;
time.tv_usec = 0;
FD_ZERO(&rfds);
- FD_SET(((unsigned int)sck), &rfds);
- return select(sck + 1, &rfds, 0, 0, &time);
+ FD_SET(((unsigned int)sck1), &rfds);
+ FD_SET(((unsigned int)sck2), &rfds);
+ max = sck1;
+ if (sck2 > max)
+ max = sck2;
+ return select(max + 1, &rfds, 0, 0, &time);
}
/*****************************************************************************/
diff --git a/xrdp/xrdp.h b/xrdp/xrdp.h
index 47cc710d..d5f5f6f6 100644
--- a/xrdp/xrdp.h
+++ b/xrdp/xrdp.h
@@ -51,15 +51,17 @@ void g_memset(void* ptr, int val, int size);
void g_memcpy(void* d_ptr, const void* s_ptr, int size);
int g_getchar(void);
int g_tcp_socket(void);
+int g_tcp_local_socket(void);
void g_tcp_close(int sck);
int g_tcp_set_non_blocking(int sck);
int g_tcp_bind(int sck, char* port);
+int g_tcp_local_bind(int sck, char* port);
int g_tcp_listen(int sck);
int g_tcp_accept(int sck);
int g_tcp_recv(int sck, void* ptr, int len, int flags);
int g_tcp_send(int sck, void* ptr, int len, int flags);
int g_tcp_last_error_would_block(int sck);
-int g_tcp_select(int sck);
+int g_tcp_select(int sck1, int sck2);
int g_is_term(void);
void g_set_term(int in_val);
void g_sleep(int msecs);
diff --git a/xrdp/xrdp_process.c b/xrdp/xrdp_process.c
index 8694f19d..f488cdbe 100644
--- a/xrdp/xrdp_process.c
+++ b/xrdp/xrdp_process.c
@@ -59,7 +59,7 @@ int xrdp_process_main_loop(struct xrdp_process* self)
{
while (!g_is_term() && !self->term)
{
- i = g_tcp_select(self->sck);
+ i = g_tcp_select(self->sck, self->app_sck);
if (i == 1)
{
init_stream(s, 8192);
@@ -105,6 +105,9 @@ int xrdp_process_main_loop(struct xrdp_process* self)
xrdp_wm_init(self->wm);
}
}
+ else if (i == 2)
+ {
+ }
else if (i == 0)
g_sleep(10);
else
diff --git a/xrdp/xrdp_types.h b/xrdp/xrdp_types.h
index d8763a2b..bf80cb92 100644
--- a/xrdp/xrdp_types.h
+++ b/xrdp/xrdp_types.h
@@ -336,6 +336,7 @@ struct xrdp_process
/* create these when up and running */
struct xrdp_orders* orders;
struct xrdp_wm* wm;
+ int app_sck;
};
/* rdp listener */