OSDN Git Service

*** empty log message ***
authorkoinec <>
Sun, 14 Mar 2010 06:07:42 +0000 (06:07 +0000)
committerkoinec <>
Sun, 14 Mar 2010 06:07:42 +0000 (06:07 +0000)
deamon/drd64_marshald_cinfo.c

index 8ded170..582becd 100644 (file)
@@ -55,6 +55,8 @@ Drd64_Marshald_ConnectInfo    *
        for( i_cnt = 0; i_cnt < gi_marshald_cinfo_now; i_cnt++ )        {
                p_cinfo = (gp_marshald_cinfo + i_cnt);
 
+               if( -1 == p_cinfo->i_cinfo_id )         { continue; }
+
                /* host = client */
                if( DRD64_MARSHALD_CINFOTYPE_CLIENT
                                                                == p_cinfo->b_cinfo_type )      {
@@ -88,6 +90,8 @@ Drd64_Marshald_ConnectInfo    *
        for( i_cnt = 0; i_cnt < gi_marshald_cinfo_now; i_cnt++ )        {
                p_cinfo = (gp_marshald_cinfo + i_cnt);
 
+               if( -1 == p_cinfo->i_cinfo_id )         { continue; }
+
                if( DRD64_MARSHALD_CINFOTYPE_DEBUGD
                                                                == p_cinfo->b_cinfo_type )      {
                        if( i_prog_pid == p_cinfo->i_prog_pid )
@@ -177,11 +181,21 @@ int
        Drd64_Marshald_Cinfo_FreeConnectInfo(
                Drd64_Marshald_ConnectInfo *p_cinfo )
 {
+       int             i_cnt;
+       Drd64_Marshald_ConnectInfo      *p_cinfo_temp;
+
        if( NULL == p_cinfo )   { return 0x01; }
 
-       if( p_cinfo->i_cinfo_id + 1 == gi_marshald_cinfo_now )
-               { gi_marshald_cinfo_now--; }
+       //if( p_cinfo->i_cinfo_id + 1 == gi_marshald_cinfo_now )
+               //{ gi_marshald_cinfo_now--; }
+       for( i_cnt = gi_marshald_cinfo_now - 1; i_cnt >= 0 ; i_cnt-- )  {
+               p_cinfo_temp    = (gp_marshald_cinfo + i_cnt);
+               assert( NULL != p_cinfo_temp );
+
+               if( -1 < p_cinfo_temp->i_cinfo_id )     { break; }
+       }
 
+       gi_marshald_cinfo_now   = i_cnt + 1;
        p_cinfo->i_cinfo_id     = -1;
 
        return 0x00;