void udphandler::close() { unset_callback(); closesocket(m_socket); m_opened = false; }
udphandler::~udphandler() { if (m_opened) closesocket(m_socket); if (m_callback != NULL) { unset_callback(); event_del(&m_event); } }
static int login_finish(T_Connect *conn,T_NetHead *NetHead) { char *cp; T_SRV_Var *up=(T_SRV_Var *)conn->Var; GDA *gp=(GDA *)up->var; T_CLI_Var *clip; char tmp[30],tmp1[256]; unset_callback(up->TCB_no); // up->poolno=get_scpool_no(NetHead->D_NODE); /* 怎么认证还得想办法 cp=get_LABEL(up->poolno); if(!cp || strcmp(cp,logrec.label)) { sprintf(tmp1,"错误的DBLABEL %s",logrec.label); goto errret; } */ if(!gp->server) { sprintf(tmp1,"%s:connect to server fault,TCB:%d", __FUNCTION__,up->TCB_no); ShowLog(1,"%s:Error:%s",__FUNCTION__,tmp1); NetHead->ERRNO1=-1; NetHead->ERRNO2=-1; NetHead->PKG_REC_NUM=0; NetHead->data=tmp1; NetHead->PKG_LEN=strlen(NetHead->data); SendPack(conn,NetHead); return 0; // fail } clip=(T_CLI_Var *)gp->server->Var; if(clip) { // stptok(clip->UID,up->SQL_Connect.UID,sizeof(up->SQL_Connect.UID),0); // stptok(clip->DBOWN,up->SQL_Connect.DBOWN,sizeof(up->SQL_Connect.DBOWN),0); } ShowLog(5,"%s:TCB:%d,poolno=%d,Errno=%d",__FUNCTION__,up->TCB_no,up->poolno,clip->Errno); release_SC_connect(&gp->server,up->TCB_no,up->poolno); cp=tmp1; if(clip) cp+=sprintf(cp,"%s|%s|%s|%s|", gp->devid,gp->operid ,clip->UID,clip->DBOWN); else cp+=sprintf(cp,"%s|%s|||", gp->devid,gp->operid); cp+=sprintf(cp,"%s|%d|",rsecstrfmt(tmp,now_sec(),YEAR_TO_SEC),up->TCB_no); ShowLog(2,"%s:%s Login success",__FUNCTION__,tmp1); NetHead->data=tmp1; NetHead->PKG_LEN=strlen(NetHead->data); NetHead->ERRNO1=0; NetHead->ERRNO2=0; NetHead->PKG_REC_NUM=0; SendPack(conn,NetHead); return 1; }