diff --git a/3rdp/build/cl-make-channels-work.patch b/3rdp/build/cl-make-channels-work.patch
index f7fad07026af50fd0ba4f9acb202ab465a9e0a38..f2b0b298e626b2ec014a49ee40ea0caa1bc40fd6 100644
--- a/3rdp/build/cl-make-channels-work.patch
+++ b/3rdp/build/cl-make-channels-work.patch
@@ -1,42 +1,3 @@
---- ./session/ssh.h.orig	2023-05-06 18:55:50.000000000 -0400
-+++ ./session/ssh.h	2024-01-12 23:35:03.804841000 -0500
-@@ -309,9 +309,17 @@
- 	SSH_ATTRIBUTE_WINDOWCOUNT,				/* Data window count */
- 	SSH_ATTRIBUTE_WINDOWSIZE,				/* Data window size */
- 	SSH_ATTRIBUTE_ALTCHANNELNO,				/* Secondary channel no. */
-+	SSH_ATTRIBUTE_NEEDWINDOW,				/* Send session open when window opens */
- 	SSH_ATTRIBUTE_LAST						/* Last channel attribute */
- 	} SSH_ATTRIBUTE_TYPE;
- 
-+#ifdef USE_SSH_EXTENDED
-+typedef enum { SERVICE_NONE, SERVICE_SHELL, SERVICE_PORTFORWARD, 
-+			   SERVICE_SUBSYSTEM, SERVICE_EXEC, SERVICE_LAST } SERVICE_TYPE;
-+#else
-+typedef enum { SERVICE_NONE, SERVICE_SHELL, SERVICE_LAST } SERVICE_TYPE;
-+#endif /* USE_SSH_EXTENDED */
-+
- /* Check whether a DH/ECDH value is valid for a given server key size.  The 
-    check is slightly different for the ECC version because the value is
-    a composite ECC point with two coordinates, so we have to divide the 
-@@ -697,6 +705,18 @@
- 
- /* Prototypes for functions in ssh2_msgcli.c */
- 
-+CHECK_RETVAL STDC_NONNULL_ARG( ( 1, 2 ) ) \
-+int getServiceType( INOUT_PTR SESSION_INFO *sessionInfoPtr, 
-+						   OUT_ENUM_OPT( SERVICE ) SERVICE_TYPE *serviceType );
-+						   CHECK_RETVAL STDC_NONNULL_ARG( ( 1, 2 ) ) \
-+int createSessionOpenRequest( INOUT_PTR SESSION_INFO *sessionInfoPtr,
-+									 INOUT_PTR STREAM *stream,
-+									 IN_ENUM( SERVICE ) \
-+										const SERVICE_TYPE serviceType );
-+CHECK_RETVAL STDC_NONNULL_ARG( ( 1, 2 ) ) \
-+int processChannelOpenFailure( INOUT_PTR SESSION_INFO *sessionInfoPtr, INOUT_PTR STREAM *stream );
-+CHECK_RETVAL STDC_NONNULL_ARG( ( 1, 2 ) ) \
-+int processChannelOpenConfirmation( INOUT_PTR SESSION_INFO *sessionInfoPtr, INOUT_PTR STREAM *stream );
- CHECK_RETVAL STDC_NONNULL_ARG( ( 1 ) ) \
- int sendChannelOpen( INOUT_PTR SESSION_INFO *sessionInfoPtr );
- 
 --- session/sess_rd.c.orig	2023-05-06 19:14:10.000000000 -0400
 +++ session/sess_rd.c	2024-01-13 01:40:38.360167000 -0500
 @@ -739,7 +739,7 @@
@@ -523,8 +484,8 @@
 +	return (CRYPT_ENVELOPE_RESOURCE);
  	}
  #endif /* USE_SSH */
---- session/ssh2_channel.c.orig	2024-01-14 18:43:50.796652000 -0500
-+++ session/ssh2_channel.c	2024-01-14 18:45:50.515008000 -0500
+--- session/ssh2_channel.c.orig	2024-02-09 21:30:28.116630000 -0500
++++ session/ssh2_channel.c	2024-02-09 21:31:00.238043000 -0500
 @@ -25,6 +25,7 @@
  #define CHANNEL_FLAG_ACTIVE		0x01	/* Channel is active */
  #define CHANNEL_FLAG_WRITECLOSED 0x02	/* Write-side of ch.closed */
@@ -553,6 +514,15 @@
  		}
  
  	retIntError();
+@@ -726,7 +731,7 @@
+ 	}
+ 
+ CHECK_RETVAL STDC_NONNULL_ARG( ( 1 ) ) \
+-int setChannelExtAttribute( const SESSION_INFO *sessionInfoPtr,
++int setChannelExtAttribute( INOUT_PTR SESSION_INFO *sessionInfoPtr,
+ 							IN_ATTRIBUTE const SSH_ATTRIBUTE_TYPE attribute,
+ 							IN_INT_Z const int value )
+ 	{
 @@ -748,6 +753,8 @@
  		{
  		case SSH_ATTRIBUTE_ACTIVE:
@@ -576,3 +546,51 @@
  			return( CRYPT_OK );
  		}
  
+--- session/ssh.h.orig	2023-05-06 18:55:50.000000000 -0400
++++ session/ssh.h	2024-02-09 21:31:35.603926000 -0500
+@@ -309,9 +309,17 @@
+ 	SSH_ATTRIBUTE_WINDOWCOUNT,				/* Data window count */
+ 	SSH_ATTRIBUTE_WINDOWSIZE,				/* Data window size */
+ 	SSH_ATTRIBUTE_ALTCHANNELNO,				/* Secondary channel no. */
++	SSH_ATTRIBUTE_NEEDWINDOW,				/* Send session open when window opens */
+ 	SSH_ATTRIBUTE_LAST						/* Last channel attribute */
+ 	} SSH_ATTRIBUTE_TYPE;
+ 
++#ifdef USE_SSH_EXTENDED
++typedef enum { SERVICE_NONE, SERVICE_SHELL, SERVICE_PORTFORWARD, 
++			   SERVICE_SUBSYSTEM, SERVICE_EXEC, SERVICE_LAST } SERVICE_TYPE;
++#else
++typedef enum { SERVICE_NONE, SERVICE_SHELL, SERVICE_LAST } SERVICE_TYPE;
++#endif /* USE_SSH_EXTENDED */
++
+ /* Check whether a DH/ECDH value is valid for a given server key size.  The 
+    check is slightly different for the ECC version because the value is
+    a composite ECC point with two coordinates, so we have to divide the 
+@@ -655,7 +663,7 @@
+ 						  IN_BUFFER( dataLength ) const void *data, 
+ 						  IN_LENGTH_TEXT const int dataLength );
+ CHECK_RETVAL STDC_NONNULL_ARG( ( 1 ) ) \
+-int setChannelExtAttribute( const SESSION_INFO *sessionInfoPtr,
++int setChannelExtAttribute( INOUT_PTR SESSION_INFO *sessionInfoPtr,
+ 							IN_ATTRIBUTE const SSH_ATTRIBUTE_TYPE attribute,
+ 							IN_INT_Z const int value );
+ CHECK_RETVAL STDC_NONNULL_ARG( ( 1 ) ) \
+@@ -697,6 +705,18 @@
+ 
+ /* Prototypes for functions in ssh2_msgcli.c */
+ 
++CHECK_RETVAL STDC_NONNULL_ARG( ( 1, 2 ) ) \
++int getServiceType( INOUT_PTR SESSION_INFO *sessionInfoPtr, 
++						   OUT_ENUM_OPT( SERVICE ) SERVICE_TYPE *serviceType );
++						   CHECK_RETVAL STDC_NONNULL_ARG( ( 1, 2 ) ) \
++int createSessionOpenRequest( INOUT_PTR SESSION_INFO *sessionInfoPtr,
++									 INOUT_PTR STREAM *stream,
++									 IN_ENUM( SERVICE ) \
++										const SERVICE_TYPE serviceType );
++CHECK_RETVAL STDC_NONNULL_ARG( ( 1, 2 ) ) \
++int processChannelOpenFailure( INOUT_PTR SESSION_INFO *sessionInfoPtr, INOUT_PTR STREAM *stream );
++CHECK_RETVAL STDC_NONNULL_ARG( ( 1, 2 ) ) \
++int processChannelOpenConfirmation( INOUT_PTR SESSION_INFO *sessionInfoPtr, INOUT_PTR STREAM *stream );
+ CHECK_RETVAL STDC_NONNULL_ARG( ( 1 ) ) \
+ int sendChannelOpen( INOUT_PTR SESSION_INFO *sessionInfoPtr );
+