Hello Vic,

--- On Mon, 2/5/11, Vic Lee <[email protected]> wrote:

> I think the right thing to do is to
> announce only smartcard before 
> login, and accounce all after login. I remember the device
> will be 
> cleared after the server sends PAKID_CORE_USER_LOGGEDON.


Something like that?

diff --git a/channels/rdpdr/rdpdr_main.c b/channels/rdpdr/rdpdr_main.c
index d55229f..868776a 100644
--- a/channels/rdpdr/rdpdr_main.c
+++ b/channels/rdpdr/rdpdr_main.c
@@ -673,6 +673,7 @@ thread_process_message(rdpdrPlugin * plugin, char * data, 
int data_size)
        uint16 packetID;
        uint32 deviceID;
        uint32 status;
+       SERVICE * srv;
 
        component = GET_UINT16(data, 0);
        packetID = GET_UINT16(data, 2);
@@ -700,15 +701,19 @@ thread_process_message(rdpdrPlugin * plugin, char * data, 
int data_size)
                                LLOGLN(10, ("PAKID_CORE_CLIENTID_CONFIRM"));
                                rdpdr_process_server_clientid_confirm(plugin, 
&data[4], data_size - 4);
 
+                               srv = 
devman_get_service_by_type(plugin->devman, RDPDR_DTYP_SMARTCARD);
+
                                /* versionMinor 0x0005 doesn't send 
PAKID_CORE_USER_LOGGEDON,
                                        so we have to send it here */
-                               if (plugin->versionMinor == 0x0005)
+                               if (plugin->versionMinor == 0x0005 || srv->type 
== RDPDR_DTYP_SMARTCARD)
                                        
rdpdr_send_device_list_announce_request(plugin);
                                break;
 
                        case PAKID_CORE_USER_LOGGEDON:
                                LLOGLN(10, ("PAKID_CORE_USER_LOGGEDON"));
-                               rdpdr_send_device_list_announce_request(plugin);
+                               srv = 
devman_get_service_by_type(plugin->devman, RDPDR_DTYP_SMARTCARD);
+                               if (!srv->type == RDPDR_DTYP_SMARTCARD)
+                                       
rdpdr_send_device_list_announce_request(plugin);
                                break;
 
                        case PAKID_CORE_DEVICE_REPLY:


Thank you,

Eduardo



> 
> On 05/02/2011 08:19 AM, Aaron Small wrote:
> > Hello,
> >
> > Thanks for implementing smart card redirection! I have
> access to a computer that requires a smart card to login, so
> can help to test this. I find the remote computer doesn't
> detect the smartcard in time, though, since it's needed for
> login, the smartcard's presence needs to be announced before
> login completes, and it seems the FreeRDP announces it only
> after login completes. The following patch fixes the problem
> for me, so that it can properly use the smartcard during
> login:
> >
> > diff --git a/channels/rdpdr/rdpdr_main.c
> b/channels/rdpdr/rdpdr_main.c
> > index d55229f..2a8bd25 100644
> > --- a/channels/rdpdr/rdpdr_main.c
> > +++ b/channels/rdpdr/rdpdr_main.c
> > @@ -700,15 +700,11 @@
> thread_process_message(rdpdrPlugin * plugin, char * data,
> int data_size)
> >          
>         LLOGLN(10,
> ("PAKID_CORE_CLIENTID_CONFIRM"));
> >          
>        
> rdpdr_process_server_clientid_confirm(plugin,&data[4],
> data_size - 4);
> >
> > -       
>         /* versionMinor 0x0005
> doesn't send PAKID_CORE_USER_LOGGEDON,
> > -       
>             so
> we have to send it here */
> > -       
>         if
> (plugin->versionMinor == 0x0005)
> > -       
>            
> rdpdr_send_device_list_announce_request(plugin);
> > +       
>        
> rdpdr_send_device_list_announce_request(plugin);
> >          
>         break;
> >
> >          
>     case PAKID_CORE_USER_LOGGEDON:
> >          
>         LLOGLN(10,
> ("PAKID_CORE_USER_LOGGEDON"));
> > -       
>        
> rdpdr_send_device_list_announce_request(plugin);
> >          
>         break;
> >
> >          
>     case PAKID_CORE_DEVICE_REPLY:
> >
> >
> >
> > Thanks,
> > Aaron
> 
> 
> 
> ------------------------------------------------------------------------------
> WhatsUp Gold - Download Free Network Management Software
> The most intuitive, comprehensive, and cost-effective
> network 
> management toolset available today.  Delivers lowest
> initial 
> acquisition cost and overall TCO of any competing
> solution.
> http://p.sf.net/sfu/whatsupgold-sd
> _______________________________________________
> Freerdp-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/freerdp-devel
> 

------------------------------------------------------------------------------
WhatsUp Gold - Download Free Network Management Software
The most intuitive, comprehensive, and cost-effective network 
management toolset available today.  Delivers lowest initial 
acquisition cost and overall TCO of any competing solution.
http://p.sf.net/sfu/whatsupgold-sd
_______________________________________________
Freerdp-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freerdp-devel

Reply via email to