static Bool SendTerminal( NETFILE *fp, SessionData *data) { unsigned char c; char wname[SIZE_LONGNAME+1]; LargeByteString *scrdata; int i; ENTER_FUNC; SendPacketClass(fp,WFC_HEADER); ON_IO_ERROR(fp,badio); dbgmsg("send DATA"); SendString(fp,data->hdr->user); ON_IO_ERROR(fp,badio); SendString(fp,data->hdr->window); ON_IO_ERROR(fp,badio); SendString(fp,data->hdr->widget); ON_IO_ERROR(fp,badio); SendChar (fp,data->hdr->puttype); ON_IO_ERROR(fp,badio); dbgprintf("window = [%s]",data->hdr->window); SendInt(fp,data->w.sp); ON_IO_ERROR(fp,badio); for (i=0;i<data->w.sp;i++) { SendChar(fp,data->w.s[i].puttype);ON_IO_ERROR(fp,badio); SendString(fp,data->w.s[i].window);ON_IO_ERROR(fp,badio); } while (1) { c = RecvPacketClass(fp); ON_IO_ERROR(fp,badio); switch (c) { case WFC_DATA: dbgmsg(">DATA"); RecvnString(fp,SIZE_LONGNAME,wname);ON_IO_ERROR(fp,badio); if ((scrdata = GetScreenData(data,wname)) != NULL) { dbgmsg("send OK"); SendPacketClass(fp,WFC_OK); ON_IO_ERROR(fp,badio); SendLBS(fp,scrdata); ON_IO_ERROR(fp,badio); } else { dbgmsg("send NODATA"); SendPacketClass(fp,WFC_NODATA); ON_IO_ERROR(fp,badio); } dbgmsg("<DATA"); break; case WFC_DONE: dbgmsg("DONE"); return TRUE; case WFC_END: dbgmsg("END"); return FALSE; default: Warning("[%s] session failure packet [%X]",data->hdr->uuid,c); dbgprintf("c = [%X]\n",c); return FALSE; } } Warning("does not reach"); LEAVE_FUNC; return FALSE; badio: Warning("[%s] session recv failure",data->hdr->uuid); LEAVE_FUNC; return FALSE; }
static Bool SendVeryfyData_Redirect( DBG_Struct *dbg) { Bool rc = FALSE; if ( (dbg->fpLog != NULL) && ( dbg->redirectData != NULL) && ( LBS_Size(dbg->redirectData) > 0 ) ) { LBS_EmitEnd(dbg->checkData); LBS_EmitEnd(dbg->redirectData); SendPacketClass(dbg->fpLog,RED_DATA); ON_IO_ERROR(dbg->fpLog,badio); SendInt(dbg->fpLog, dbg->ticket_id); ON_IO_ERROR(dbg->fpLog,badio); SendLBS(dbg->fpLog,dbg->checkData); ON_IO_ERROR(dbg->fpLog,badio); SendLBS(dbg->fpLog,dbg->redirectData); ON_IO_ERROR(dbg->fpLog,badio); } rc = SendCommit_Redirect(dbg); badio: return rc; }
extern void PutDB_AuditLog( DBG_Struct *dbg, LargeByteString *lbs) { ENTER_FUNC; if ( dbg->fpLog != NULL ) { SendPacketClass(dbg->fpLog,RED_AUDIT); ON_IO_ERROR(dbg->fpLog,badio); SendLBS(dbg->fpLog,lbs); ON_IO_ERROR(dbg->fpLog,badio); } badio: LEAVE_FUNC; }
static void APISession( TermNode *term) { SessionData *data; APIData *api; char ld[SIZE_NAME+1]; char window[SIZE_NAME+1]; char user[SIZE_USER+1]; char host[SIZE_HOST+1]; data = NULL; RecvnString(term->fp, sizeof(ld), ld); ON_IO_ERROR(term->fp,badio); RecvnString(term->fp, sizeof(window), window); ON_IO_ERROR(term->fp,badio); RecvnString(term->fp, sizeof(user), user); ON_IO_ERROR(term->fp,badio); RecvnString(term->fp, sizeof(host), host); ON_IO_ERROR(term->fp,badio); data = InitAPISession(user,ld,window,host); if (data != NULL) { data->term = term; data->retry = 0; api = data->apidata; RecvLBS(term->fp, api->rec); data = Process(data); api = data->apidata; SendPacketClass(term->fp, api->status); ON_IO_ERROR(term->fp,badio2); if (api->status == WFC_API_OK) { SendLBS(term->fp, api->rec); ON_IO_ERROR(term->fp,badio2); } CloseNet(term->fp); badio2: FreeSessionData(data); } else { SendPacketClass(term->fp,WFC_API_NOT_FOUND); ON_IO_ERROR(term->fp,badio2); CloseNet(term->fp); } badio: ; }
static PacketClass SYSDB_RequestCommon(NETFILE *fp, PacketClass pc, ValueStruct *val) { PacketClass rc; LargeByteString *buf; rc = SESSION_CONTROL_NG; buf = NewLBS(); LBS_ReserveSize(buf, NativeSizeValue(NULL, val), FALSE); NativePackValue(NULL, LBS_Body(buf), val); SendPacketClass(fp, SYSDATA_SYSDB); ON_IO_ERROR(fp, badio); SendPacketClass(fp, pc); ON_IO_ERROR(fp, badio); SendLBS(fp, buf); ON_IO_ERROR(fp, badio); rc = RecvPacketClass(fp); RecvLBS(fp, buf); NativeUnPackValue(NULL, LBS_Body(buf), val); badio: FreeLBS(buf); return rc; }