Example #1
0
extern	void
OpenDB_RedirectPort(
	DBG_Struct	*dbg)
{
	int		fh;
	DBG_Struct	*rdbg;

ENTER_FUNC;
	dbgprintf("dbg [%s]\n",dbg->name);
	if		(	(  fNoRedirect  )
			||	(  dbg->redirect  ==  NULL  ) ) {
		dbg->fpLog = NULL;
		dbg->redirectData = NULL;
	} else {
		rdbg = dbg->redirect;
		if		( ( rdbg->redirectPort  ==  NULL )
		 || (( fh = ConnectSocket(rdbg->redirectPort,SOCK_STREAM) )  <  0 ) ) {
			dbgmsg("loging server not ready");
			dbg->fpLog = NULL;
			dbg->redirectData = NULL;
			if ( !fNoCheck ){
				ChangeDBStatus_Redirect(dbg, DB_STATUS_REDFAILURE);
			}
		} else {
			dbg->fpLog = SocketToNet(fh);
			dbg->redirectData = NewLBS();
			if ( !RecvSTATUS_Redirect(dbg) ){
				CloseDB_RedirectPort(dbg);
			}
		}
	}
LEAVE_FUNC;
}
Example #2
0
extern void RedirectError(void) {
  DBG_Struct *dbg;
  int i;
  for (i = 0; i < ThisEnv->cDBG; i++) {
    dbg = ThisEnv->DBG[i];
    CloseDB_RedirectPort(dbg);
  }
}
Example #3
0
extern ValueStruct *SYSDATA_DBDISCONNECT(DBG_Struct *dbg, DBCOMM_CTRL *ctrl) {
  if (dbg->dbstatus == DB_STATUS_CONNECT) {
    SendPacketClass(NBCONN(dbg), SYSDATA_END);
    CloseNet(NBCONN(dbg));
    CloseDB_RedirectPort(dbg);
    dbg->dbstatus = DB_STATUS_DISCONNECT;
    if (ctrl != NULL) {
      ctrl->rc = MCP_OK;
    }
  }
  return (NULL);
}
Example #4
0
static	ValueStruct	*
_DBDISCONNECT(
	DBG_Struct	*dbg,
	DBCOMM_CTRL	*ctrl)
{
ENTER_FUNC;
	if		(  dbg->process[PROCESS_UPDATE].dbstatus == DB_STATUS_CONNECT ) { 
		CloseDB_RedirectPort(dbg);
		FreeLBS((LargeByteString *)dbg->process[PROCESS_UPDATE].conn);
		dbg->process[PROCESS_UPDATE].dbstatus = DB_STATUS_DISCONNECT;
		if		(  ctrl  !=  NULL  ) {
			ctrl->rc = MCP_OK;
		}
	}
LEAVE_FUNC;
	return	(NULL);
}
Example #5
0
extern	void
CommitDB_Redirect(
	DBG_Struct	*dbg)
{
	Bool rc = TRUE;

ENTER_FUNC;
	if (  dbg->redirect == NULL )
		return;
	rc = SendVeryfyData_Redirect(dbg);
	if ( rc ){
		rc = RecvSTATUS_Redirect(dbg);
	}
	if ( !rc ){
		CloseDB_RedirectPort(dbg);
	}
LEAVE_FUNC;
}
Example #6
0
extern	Bool
CheckDB_Redirect(
	DBG_Struct	*dbg)
{
	Bool	rc = TRUE;
ENTER_FUNC;
	if (  dbg->redirect == NULL )
		return rc;
	if		(  dbg->redirectData  !=  NULL  ) {
		if		(  dbg->fpLog  !=  NULL  ) {
			SendPacketClass(dbg->fpLog,RED_PING); ON_IO_ERROR(dbg->fpLog,badio);
			if		(  RecvPacketClass(dbg->fpLog)  !=  RED_PONG  ) {
			badio:
				Warning("dbredirect server down?");
				ChangeDBStatus_Redirect(dbg, DB_STATUS_REDFAILURE);
				CloseDB_RedirectPort(dbg);
				rc = FALSE;
			}
		}
	}
LEAVE_FUNC;
	return	(rc);
}