OSDN Git Service

*** empty log message ***
authorkoinec <>
Sun, 28 Feb 2010 06:18:37 +0000 (06:18 +0000)
committerkoinec <>
Sun, 28 Feb 2010 06:18:37 +0000 (06:18 +0000)
deamon/drd64_marshald_cmd_detach.c

index 18e144f..5ba89ae 100644 (file)
@@ -154,6 +154,44 @@ Comment:
 /*----------------------------------------------------------------------
 ----------------------------------------------------------------------*/
 int
+       Drd64_Marshald_Cmd_Detach_Scn4_INetAnswer(
+               int             i_recv_id,
+               Drd64_PacketHeader      *p_phead,
+               Drd64_Marshald_ConnectInfo      *p_cinfo,
+               Drd64_Marshald_MasterInformation        *p_marshald )
+{
+       int             i_result;
+       int             i_err;
+       int             i_socket;
+
+       DRD64_LOG_DEBUG("  [DEBUG]CMD: Detach (INet : Answer) Start");
+
+       i_result        = DRD64_MARSHALD_DISPATCH_RESULT_COMPLETE;
+
+       i_socket        = p_cinfo->i_client_socket;
+
+       Drd64_Marshald_Cinfo_FreeConnectInfo( p_cinfo );
+       p_cinfo         = NULL;
+
+       p_phead->w_packettype   ^= DRD64_PACKETTYPE_FLAG_TRANSPORT;
+       p_phead->i_cid_dest             = p_phead->i_cid_client;
+       p_phead->i_cid_client   = DRD64_CONNECTID_NONE;
+       //p_phead->i_cid_client   = p_phead->i_cid_dest;
+
+       i_err  = send( i_socket, (void *)p_phead,
+                        DRD64_PacketSize(p_phead), 0x00 );
+       DRD64_DEBUG_PRINT("send",i_err,"FD",i_socket,"errno",errno);
+       if( i_err != DRD64_PacketSize(p_phead) )   { return 0x02; }
+
+       DRD64_LOG_DEBUG("  [DEBUG]CMD: Detach (INet : Answer) Ended");
+
+       return i_result;
+}
+
+
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
+int
        Drd64_Marshald_Cmd_Detach_Scn3_LocalAnswer(
                int             i_recv_id,
                Drd64_PacketHeader      *p_phead,
@@ -162,18 +200,24 @@ int
 {
        int             i_result;
        int             i_err;
+       int             i_socket;
 
        DRD64_LOG_DEBUG("  [DEBUG]CMD: Detach (Local : Answer) Start");
 
        i_result        = DRD64_MARSHALD_DISPATCH_RESULT_COMPLETE;
 
+       i_socket        = p_cinfo->i_src_socket;
+
        Drd64_Marshald_Cinfo_FreeConnectInfo( p_cinfo );
+       p_cinfo         = NULL;
 
        p_phead->w_packettype   ^= DRD64_PACKETTYPE_OPTION_INDICATE;
+       p_phead->i_cid_dest     = p_phead->i_cid_src;
+       p_phead->i_cid_src      = DRD64_CONNECTID_NONE;
 
-       i_err  = send( p_cinfo->i_client_socket, (void *)p_phead,
+       i_err  = send( i_socket, (void *)p_phead,
                         DRD64_PacketSize(p_phead), 0x00 );
-       DRD64_DEBUG_PRINT("send",i_err,"FD",p_cinfo->i_client_socket,"errno",errno);
+       DRD64_DEBUG_PRINT("send",i_err,"FD",i_socket,"errno",errno);
        if( i_err != DRD64_PacketSize(p_phead) )   { return 0x02; }
 
        DRD64_LOG_DEBUG("  [DEBUG]CMD: Detach (Local : Answer) Ended");
@@ -185,6 +229,38 @@ int
 /*----------------------------------------------------------------------
 ----------------------------------------------------------------------*/
 int
+       Drd64_Marshald_Cmd_Detach_Scn2_INetRequest(
+               int             i_recv_id,
+               Drd64_PacketHeader      *p_phead,
+               Drd64_Marshald_ConnectInfo      *p_cinfo,
+               Drd64_Marshald_MasterInformation        *p_marshald )
+{
+       int             i_result;
+       int             i_err;
+
+       DRD64_LOG_DEBUG("  [DEBUG]CMD: Detach (INet : Request) Start");
+
+       i_result        = DRD64_MARSHALD_DISPATCH_RESULT_COMPLETE;
+
+       p_phead->w_packettype   |= DRD64_PACKETTYPE_FLAG_TRANSPORT;
+       p_phead->i_cid_client   = p_phead->i_cid_dest;
+       p_phead->i_cid_dest     = p_cinfo->i_dest_cinfo_id;
+       //p_phead->i_cid_src      = p_cinfo->i_cinfo_id;
+
+       i_err  = send( p_cinfo->i_dest_socket, (void *)p_phead,
+                        DRD64_PacketSize(p_phead), 0x00 );
+       DRD64_DEBUG_PRINT("send",i_err,"FD",p_cinfo->i_dest_socket,"errno",errno);
+       if( i_err != DRD64_PacketSize(p_phead) )   { return i_result; }
+
+       DRD64_LOG_DEBUG("  [DEBUG]CMD: Detach (INet : Request) Ended");
+
+       return i_result;
+}
+
+
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
+int
        Drd64_Marshald_Cmd_Detach_Scn1_LocalRequest(
                int             i_recv_id,
                Drd64_PacketHeader      *p_phead,
@@ -199,14 +275,14 @@ int
        i_result        = DRD64_MARSHALD_DISPATCH_RESULT_COMPLETE;
 
        p_phead->w_packettype   |= DRD64_PACKETTYPE_OPTION_INDICATE;
-       //p_phead->i_cid_client   = p_phead->i_cid_dest;
-       //p_phead->i_cid_dest     = DRD64_CONNECTID_NONE;
-       //p_phead->i_cid_src      = p_cinfo->i_cinfo_id;
+       p_phead->i_cid_src      = p_phead->i_cid_dest;
+       p_phead->i_cid_dest     = p_cinfo->i_dest_cinfo_id;
+                                                               /* = DRD64_CONNECTID_NONE */
 
        i_err  = send( p_cinfo->i_dest_socket, (void *)p_phead,
                         DRD64_PacketSize(p_phead), 0x00 );
        DRD64_DEBUG_PRINT("send",i_err,"FD",p_cinfo->i_dest_socket,"errno",errno);
-       if( i_err != DRD64_PacketSize(p_phead) )   { return 0x02; }
+       if( i_err != DRD64_PacketSize(p_phead) )   { return i_result; }
 
        DRD64_LOG_DEBUG("  [DEBUG]CMD: Detach (Local : Request) Ended");
 
@@ -239,8 +315,10 @@ int
                        i_result = Drd64_Marshald_Cmd_Detach_Scn3_LocalAnswer(
                                                        i_recv_id, p_phead, p_cinfo, p_marshald );
                }
-               /* Scnery 2: (INet)Detach Packet for INet Marshald */
+               /* Scnery 4: (INet)Detach Answer from INet Marshald */
                else    {
+                       i_result = Drd64_Marshald_Cmd_Detach_Scn4_INetAnswer(
+                                                       i_recv_id, p_phead, p_cinfo, p_marshald );
                }
        }
        else    {
@@ -251,6 +329,8 @@ int
                }
                /* Scnery 2: (INet)Detach Packet for INet Marshald */
                else    {
+                       i_result = Drd64_Marshald_Cmd_Detach_Scn2_INetRequest(
+                                                       i_recv_id, p_phead, p_cinfo, p_marshald );
                }
        }