summaryrefslogtreecommitdiffstats
path: root/libxrdp/xrdp_rdp.c
diff options
context:
space:
mode:
Diffstat (limited to 'libxrdp/xrdp_rdp.c')
-rw-r--r--libxrdp/xrdp_rdp.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/libxrdp/xrdp_rdp.c b/libxrdp/xrdp_rdp.c
index 219c0260..9b1f54fd 100644
--- a/libxrdp/xrdp_rdp.c
+++ b/libxrdp/xrdp_rdp.c
@@ -1252,3 +1252,44 @@ xrdp_rdp_send_deactivate(struct xrdp_rdp *self)
DEBUG(("out xrdp_rdp_send_deactivate"));
return 0;
}
+
+/*****************************************************************************/
+int APP_CC
+xrdp_rdp_send_session_info(struct xrdp_rdp *self, const char *data,
+ int data_bytes)
+{
+ struct stream *s;
+
+ LLOGLN(0, ("xrdp_rdp_send_session_info: data_bytes %d", data_bytes));
+ make_stream(s);
+ init_stream(s, 8192);
+
+ if (xrdp_rdp_init_data(self, s) != 0)
+ {
+ free_stream(s);
+ return 1;
+ }
+
+ if (s_check_rem_out(s, data_bytes))
+ {
+ out_uint8a(s, data, data_bytes);
+ }
+ else
+ {
+ free_stream(s);
+ return 1;
+ }
+
+ s_mark_end(s);
+
+ /* SAVE_SESSION_INFO 0x26 */
+ if (xrdp_rdp_send_data(self, s, 0x26) != 0)
+ {
+ free_stream(s);
+ return 1;
+ }
+
+ free_stream(s);
+ return 0;
+}
+