diff options
| author | jsorg71 <jsorg71> | 2004-11-15 01:30:28 +0000 |
|---|---|---|
| committer | jsorg71 <jsorg71> | 2004-11-15 01:30:28 +0000 |
| commit | 9c580f9a846f9db83508a1bd4b2d9a354d906fcf (patch) | |
| tree | fbd192cc668f2583a446422b31c8fb422e079752 /xrdp | |
| parent | 0be4f033922831d7173f86004ec0a0951a40f86d (diff) | |
| download | xrdp-proprietary-9c580f9a846f9db83508a1bd4b2d9a354d906fcf.tar.gz xrdp-proprietary-9c580f9a846f9db83508a1bd4b2d9a354d906fcf.zip | |
started work on moduals
Diffstat (limited to 'xrdp')
| -rw-r--r-- | xrdp/os_calls.c | 32 | ||||
| -rw-r--r-- | xrdp/xrdp.h | 4 | ||||
| -rw-r--r-- | xrdp/xrdp_process.c | 5 | ||||
| -rw-r--r-- | xrdp/xrdp_types.h | 1 |
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 */ |
