OSDN Git Service

*** empty log message ***
authorkoinec <>
Sun, 28 Mar 2010 04:45:01 +0000 (04:45 +0000)
committerkoinec <>
Sun, 28 Mar 2010 04:45:01 +0000 (04:45 +0000)
deamon/drd64_marshald_cmd_attach_request.c

index 52cdd14..31bf2ab 100644 (file)
@@ -46,7 +46,7 @@ Comment:
 
 /*----------------------------------------------------------------------
 ----------------------------------------------------------------------*/
-#define        DRD64_FUNCID_Marshald_Cmd_AttachRequest_Scn5_RecvTranAttachReq  0x15
+#define        DRD64_FUNCID_Marshald_Cmd_AttachRequest_Scn5    0x15
 int
        Drd64_Marshald_Cmd_AttachRequest_Scn5_RecvTranAttachReq(
                int             i_recv_id,
@@ -56,11 +56,21 @@ int
 {
        int             i_wlen;
        //int           i_result;
+       DWord   dw_errcode;
+       DWord   dw_location;
        int             i_fds;
        Drd64_Marshald_ConnectInfo      *p_cinfo_client;
        Drd64_Marshald_ConnectInfo      *p_cinfo_self;
 
-       DRD64_LOG_DEBUG("  [DEBUG]CMD: Attach Req. (Scn5:RecvTransAttachReq) Start");
+       DRD64_LOG_DEBUG(
+               "  [DEBUG]CMD: Attach Req. (Scn5:RecvTransAttachReq) Start");
+
+       dw_errcode      = DRD64_ERROR_CODE_CLEAR;
+       dw_location     = DRD64_ERROR_SET_LOCATION(
+                                               DRD64_ERROR_MODULE_MARSHALD,
+                                               DRD64_ERROR_ARCH_NODEPEND,
+                                               DRD64_SRCID_MARSHALD_CMD_ATTACH_REQUEST,
+                                               DRD64_FUNCID_Marshald_Cmd_AttachRequest_Scn5 );
 
        /* Phase 0 : Init ----------------------------*/
        p_cinfo_client  = Drd64_Marshald_CInfo_GetConnectInfo(
@@ -68,11 +78,13 @@ int
        assert( NULL != p_cinfo_client );
 
        i_fds   = p_cinfo_client->i_src_socket;
+       assert( -1 < i_fds );
 
 
        /* Phase 0 : Init ----------------------------*/
        p_cinfo_self    = Drd64_Marshald_CInfo_GetConnectInfo(
                                                                        p_attachreq->i_cid_marshald );
+       assert( NULL != p_cinfo_self );
        
        p_cinfo_self->i_dest_cinfo_id   = p_attachreq->i_cid_debugd;
        strncpy( p_cinfo_self->str_dest_addr_local,
@@ -81,8 +93,6 @@ int
 
        p_cinfo_self->i_debugd_pid_real = p_attachreq->i_debugd_pid;
 
-       //i_fds = Drd64_Server_RecvStatus_GetSocketID( i_recv_id );
-       //assert( -1 != i_fds );
 
        /* Set Answer Data ---------*/
        //p_attach->i_cid                                       = p_phead->i_cid_dest;  //XXX
@@ -99,10 +109,18 @@ int
        i_wlen  = send( i_fds, (void *)p_phead,
                                                DRD64_PacketSize(p_phead), 0x00 );
        DRD64_DEBUG_PRINT("send",i_wlen,"FD",i_fds,"errno",errno);
-       if( i_wlen != DRD64_PacketSize(p_phead) )
-               { return DRD64_MARSHALD_DISPATCH_RESULT_CLOSE; }        // XXX > error 
+       if( i_wlen != DRD64_PacketSize(p_phead) )       {
+               dw_errcode  = DRD64_ERROR_SET_CODE( DRD64_ERROR_TYPE_ERROR,
+                                                       DRD64_ERROR_PTN_SOCKET, 0x00, 0x01 );
+               Drd64_LibBrownie_Error_SetErrorInfo(
+                               dw_errcode, dw_location, errno );
+
+               /* NOT send for Error Packet ( because Socket Error ) */
+               return DRD64_MARSHALD_DISPATCH_RESULT_CLOSE;
+       } 
 
-       DRD64_LOG_DEBUG("  [DEBUG]CMD: Attach Req. (Scn5:RecvTransAttachReq) Ended");
+       DRD64_LOG_DEBUG(
+               "  [DEBUG]CMD: Attach Req. (Scn5:RecvTransAttachReq) Ended");
 
        return DRD64_MARSHALD_DISPATCH_RESULT_COMPLETE;
 }
@@ -151,10 +169,8 @@ int
        DRD64_DEBUG_PRINT("send",i_wlen,"FD",i_fds,"errno",errno);
 
        if( i_wlen != DRD64_PacketSize(p_phead) )               {
-               dw_errcode  = DRD64_ERROR_SET_CODE(
-                                                       DRD64_ERROR_TYPE_ERROR,
-                                                       DRD64_ERROR_PTN_SOCKET,
-                                                       0x00, 0x01 );
+               dw_errcode  = DRD64_ERROR_SET_CODE( DRD64_ERROR_TYPE_ERROR,
+                                                       DRD64_ERROR_PTN_SOCKET, 0x00, 0x01 );
                Drd64_LibBrownie_Error_SetErrorInfo(
                                dw_errcode, dw_location, errno );
 
@@ -215,6 +231,7 @@ int
                                                DRD64_ERROR_PTN_FUNCTION, 0x00, 0x01 );
         Drd64_LibBrownie_Error_SetErrorInfo(
                                                dw_errcode, dw_location, errno );
+               /* send answer */
        }
 
        DRD64_LOG_DEBUG(
@@ -226,7 +243,7 @@ int
 
 /*----------------------------------------------------------------------
 ----------------------------------------------------------------------*/
-#define        DRD64_FUNCID_Marshald_Cmd_AttachRequest_Scn3_TransAttachRequest 0x13
+#define        DRD64_FUNCID_Marshald_Cmd_AttachRequest_Scn3    0x13
 int
        Drd64_Marshald_Cmd_AttachRequest_Scn3_TransAttachRequest(
                int             i_recv_id,
@@ -235,12 +252,23 @@ int
                Drd64_Marshald_MasterInformation        *p_marshald )
 {
        int             i_err;
+       int             i_result;
+       DWord   dw_errcode;
+       DWord   dw_location;
        Drd64_Marshald_ConnectInfo      *p_cinfo_dest;
        Drd64_Marshald_ConnectInfo      *p_cinfo_now;
        Drd64_Marshald_ConnectInfo      *p_cinfo_marshald;
 
        DRD64_LOG_DEBUG("  [DEBUG]CMD: Attach Req. (Scn3:TransAttachReq.) Start");
 
+       i_result        = DRD64_MARSHALD_DISPATCH_RESULT_CLOSE;
+       dw_errcode      = DRD64_ERROR_CODE_CLEAR;
+       dw_location     = DRD64_ERROR_SET_LOCATION(
+                                               DRD64_ERROR_MODULE_MARSHALD,
+                                               DRD64_ERROR_ARCH_NODEPEND,
+                                               DRD64_SRCID_MARSHALD_CMD_ATTACH_REQUEST,
+                                               DRD64_FUNCID_Marshald_Cmd_AttachRequest_Scn3 );
+
        /* Phase 0 : Init ----------------------------*/
        p_cinfo_dest = Drd64_Marshald_SearchINetConnection(
                                                                &(p_attachreq->t_prog_addr) );
@@ -252,8 +280,14 @@ int
        assert( NULL != p_cinfo_marshald );
 
        p_cinfo_now     = Drd64_Marshald_CInfo_AllocConnectInfo();
-       if( NULL == p_cinfo_now )
-               { return 0x00; }
+       if( NULL == p_cinfo_now )       {
+               dw_errcode  = DRD64_ERROR_SET_CODE( DRD64_ERROR_TYPE_ERROR,
+                                               DRD64_ERROR_PTN_NOMEMORY, 0x00, 0x01 );
+        Drd64_LibBrownie_Error_SetErrorInfo(
+                                               dw_errcode, dw_location, errno );
+               /* send answer */
+               return DRD64_MARSHALD_DISPATCH_RESULT_COMPLETE;
+       }
 
        /* Phase 0 : Init ----------------------------*/
        /* Phase 3-1 : Set ConnectInfo ---*/
@@ -268,8 +302,18 @@ int
        /* Set p_cinfo_now->str_dest_addr_local is Scn5 */
        p_cinfo_now->p_dest_cinfo_connection    = p_cinfo_dest;
 
-       Drd64_LibBrownie_INetAddr_SetInAddr_LocalHost(
+       i_err   = Drd64_LibBrownie_INetAddr_SetInAddr_LocalHost(
                                        &(p_cinfo_now->t_src_addr_inet) );
+    if( 0x00 != i_err )   {
+               dw_errcode  = DRD64_ERROR_SET_CODE( DRD64_ERROR_TYPE_ERROR,
+                                               DRD64_ERROR_PTN_INETADDR, 0x00, 0x02 );
+        Drd64_LibBrownie_Error_SetErrorInfo(
+                                               dw_errcode, dw_location, errno );
+               Drd64_Marshald_Cinfo_FreeConnectInfo( p_cinfo_now );
+               /* send answer */
+        return DRD64_MARSHALD_DISPATCH_RESULT_COMPLETE;
+    }
+
        p_cinfo_now->i_src_cinfo_id             = DRD64_CONNECTID_NONE;
        p_cinfo_now->i_src_socket
                                        = Drd64_Server_RecvStatus_GetSocketID( i_recv_id );
@@ -306,7 +350,13 @@ int
                                 DRD64_PacketSize(p_phead), 0x00 );
     DRD64_DEBUG_PRINT("send",i_err,"FD",p_cinfo_dest->i_dest_socket,"errno",errno);
     if( i_err != DRD64_PacketSize(p_phead) )   {
-        return 0x02;
+               dw_errcode  = DRD64_ERROR_SET_CODE( DRD64_ERROR_TYPE_ERROR,
+                                               DRD64_ERROR_PTN_SOCKET, 0x00, 0x03 );
+        Drd64_LibBrownie_Error_SetErrorInfo(
+                                               dw_errcode, dw_location, errno );
+               Drd64_Marshald_Cinfo_FreeConnectInfo( p_cinfo_now );
+               /* NOT send Error Answer Packet because socket error */
+        return DRD64_MARSHALD_DISPATCH_RESULT_CLOSE;
     }
 
        /*Drd64_Server_RecvStatus_SetCmdStatus( i_recv_id,