assert( NULL != p_recv );
i_fds = p_recv->i_fds_id;
- p_phead->w_packettype |= DRD64_PACKETTYPE_FLAG_ANSWER;
+ if( DRD64_IsPacketTypeFlag(p_phead, DRD64_PACKETTYPE_FLAG_RELAY) ) {
+ p_debugd->i_socket_client = i_fds;
+ p_debugd->i_socket_server = i_fds;
+ }
+ else {
+ p_debugd->i_socket_client = i_fds;
+ p_debugd->i_socket_server = -1;
+ }
- p_debugd->i_socket_client = i_fds;
+ p_phead->w_packettype |= DRD64_PACKETTYPE_FLAG_ANSWER;
i_wlen = send( i_fds, (void *)p_phead, DRD64_PacketSize(p_phead), 0x00);
DRD64_DEBUG_PRINT("send",i_wlen,"FD",i_fds,"errno",errno);
/* 0x03 = Judge 2 : Restart Flag ON */
else if( DRD64_DEBUGD_DISPATCH_RESULT_RESTART == i_result )
{ i_resume_flag = 0x01; }
- /* 0x05 = Judge 3 : from Clinet Connect Request */
- /*else if( DRD64_DEBUGD_DISPATCH_RESULT_SETCLIENT
- == i_result )
- { p_debugd->i_socket_client = i_socket; } */
/* 0x01 = Judge 1 : Reading Next */
}
#define DRD64_DEBUGD_DISPATCH_RESULT_COMPLETE 0x02
#define DRD64_DEBUGD_DISPATCH_RESULT_RESTART 0x03
#define DRD64_DEBUGD_DISPATCH_RESULT_POLL 0x04
-#define DRD64_DEBUGD_DISPATCH_RESULT_SETCLIENT 0x05
+//#define DRD64_DEBUGD_DISPATCH_RESULT_SETCLIENT 0x05
#endif /* DRD64_HEADER_DEBUGD_DISPATCH */
int i_attach_mode;
/* Socket Info. ---- */
- char str_socketname[ DRD64_MAX_PATH ];
+ char str_socketname_debugd[ DRD64_MAX_PATH+1 ];
int i_socket_debugd;
int i_socket_client;
+ int i_socket_server;
+ // char str_socketname_marshald[ DRD64_MAX_PATH+1 ];
+ // int i_socket_marshald;
/* Client Info. ---- */
int i_client_type;
/* Target Info. ---- */
int i_target_pid;
- char str_target_file_exec[ DRD64_MAX_PATH ];
- char str_target_file_coredump[ DRD64_MAX_PATH ];
+ char str_target_file_exec[ DRD64_MAX_PATH+1 ];
+ char str_target_file_coredump[ DRD64_MAX_PATH+1 ];
char **ppstr_argv;
int i_arg_options;
free( gp_sendbuffer );
- close( drd64_debugd_info.i_socket_debugd );
+ if( drd64_debugd_info.i_socket_client
+ != drd64_debugd_info.i_socket_server ) {
+ close( drd64_debugd_info.i_socket_server );
+ }
+
close( drd64_debugd_info.i_socket_client );
+ close( drd64_debugd_info.i_socket_debugd );
DRD64_LOG_INFO("[INFO] Terminate drdebugd. Good-Bye.");
Drd64_Server_Log_TermLogSystem();
DRD64_LOG_INFO("[Arch]: INTEL64(amd64/x86-64) / FreeBSD");
DRD64_LOG_INFO("[INFO]: Booting drdebugd");
+ p_debugd->str_socketname_debugd[0] = '\0';
+
return 0x00;
}
/* Create Socket from Local Client or Marshald */
p_debugd->i_socket_debugd =
Drd64_LibBrownie_Socket_InitSocketServer_Local(
- p_debugd->str_socketname );
+ p_debugd->str_socketname_debugd );
if( 0 > p_debugd->i_socket_debugd ) {
return 0x01;
}
/* "n" : SocketName for Client */
if( 'n' == i_opt ) {
- strncpy( p_debugd->str_socketname, optarg, DRD64_MAX_PATH );
+ strncpy( p_debugd->str_socketname_debugd,
+ optarg, DRD64_MAX_PATH );
i_options++;
}
+ /* "s" : SocketName for Server */
+ /*else if( 's' == i_opt ) {
+ strncpy( p_debugd->str_socketname_server,
+ optarg, DRD64_MAX_PATH );
+ }*/
/* "c" : coredump File Name */
else if( 'c' == i_opt ) {
strncpy( p_debugd->str_target_file_coredump,
/* Phase 1 : Generate Debugd Param -----------*/
/* s : socketname(PF_UNIX) for debugd<=>marshald */
- strcpy( str_sockname_server, "/tmp/tmpdrd64debugd_server_XXXXXXXXXX" );
- if( NULL == mktemp( str_sockname_server )) { return 0x01; }
+ // strcpy( str_sockname_server, "/tmp/tmpdrd64debugd_server_XXXXXXXXXX" );
+ // if( NULL == mktemp( str_sockname_server )) { return 0x01; }
/* n : socketname(PF_UNIX) for debugd<=>Client */
strcpy( str_sockname_client, "/tmp/tmpdrd64debugd_client_XXXXXXXXXX" );