亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? serverdb.c

?? TUXEDO中間件重新改造和包裝.在移動BOSS中正式運用.
?? C
?? 第 1 頁 / 共 3 頁
字號:
            DoCommit(&lda) ;          else             DoRollback(&lda);        }        SetStrByte2(rowbuf,rownum);        userlog("last packet:%d\n",rownum);        sendlen=PacketSelectQR(sendbuf,fdbuf,fdlen,rownum,                   rowbuf,rowlen,1);        /* 分配緩沖區(qū)用于發(fā)送內(nèi)容 */        tpbuf=tpalloc("CARRAY",NULL,sendlen);        memcpy(tpbuf,sendbuf,sendlen);        userlog("tpsend,rowlen=%d,trownum=%d\n",sendlen,trownum);        DebugPrint(tpbuf,100);        tpsend(svcinfo->cd,tpbuf,sendlen,TPNOTIME,&revent);        /* 可能要增加對tpsend返回結果的處理 */    		DebugPrintHeader((PacketQR*)tpbuf);        sprintf((char*)szOCIErrMsg,"提取到%d行記錄!",trownum);        userlog("%s\n",szOCIErrMsg);        tpreturn(TPSUCCESS,0,tpbuf,sendlen,0);        return;      }      /*      if(cda.rc!=NULL_VALUE_RETURNED)      {        oci_error(&cda);        goto FailReturn;      }      */    }    ++trownum;    /* userlog("Fetch %d/%d row...\n",rownum,trownum); */    if((trownum>nOCIRowLimits)&&(nOCIRowLimits>0))      continue;    ++rownum;    for(col = 0; col < nOCIFieldNum ; col++)    {      /* 檢查NULL值 */      if (def[col].indp<0)  /* 追加一個空字段 */      {        *rowpos='\0';        rowpos+=LEN_BYTE_1;        rowlen+=LEN_BYTE_1;      }      else /* 追加一個字段內(nèi)容 */      {        /*        switch (desc[col].dbtype)        {        case FLOAT_TYPE:          fdvallen=sprintf(rowpos+LEN_BYTE_1,"%f",def[col].flt_buf);          break;        case INT_TYPE:          fdvallen=sprintf(rowpos+LEN_BYTE_1,"%d",def[col].int_buf);          break;        default:          fdvallen=sprintf(rowpos+LEN_BYTE_1,"%s", def[col].buf);          break;        }        */        fdvallen=sprintf(rowpos+LEN_BYTE_1,"%s",def[col].buf);        /* userlog("%d\n",fdvallen); */        *(unsigned char*)rowpos=fdvallen;        rowpos+=LEN_BYTE_1+fdvallen;        rowlen+=LEN_BYTE_1+fdvallen;      }    }    /* 追加\n */    *rowpos='\n';    rowpos++;    rowlen++;    if(rowlen+PACKET_MIN_LEN+800>=MAX_SENDBUF_LEN)    {      SetStrByte2(rowbuf,rownum);       userlog("continue packet %d\n",rownum);      sendlen=PacketSelectQR(sendbuf,fdbuf,fdlen,rownum,                 rowbuf,rowlen,0);      /* 分配緩沖區(qū)用于發(fā)送內(nèi)容 */      tpbuf=tpalloc("CARRAY",NULL,sendlen);      memcpy(tpbuf,sendbuf,sendlen);      DebugPrint(tpbuf,100);      DebugPrintHeader((PacketQR*)tpbuf);      userlog("tpsend,rowlen=%d,trownum=%d\n",sendlen,trownum);      tpsend(svcinfo->cd,tpbuf,sendlen,TPNOTIME,&revent);      /* 可能要增加對tpsend返回結果的處理 */      /* 重新初始化新的記錄組 */      rownum=0;      *rowbuf='\0';      rowpos=rowbuf+LEN_BYTE_2;      rowlen=LEN_BYTE_2;      ++nOCIPacketNo;    }  }FailReturn:  /* 與數(shù)據(jù)庫斷開連接,嘗試重新連接 */  if(nOCIErrNo==3114)  {    tmStart=time(NULL);    while(time(NULL)<tmStart+10)    {      retcode=ReConnectSQLServer();      if(retcode==0)        goto RestartSQLProcess;      if(retcode==-2) break;    }  }   if(nOCITranID==0)  {    if(nOCIErrNo==0)      DoCommit(&lda) ;    else       DoRollback(&lda);  }  printf("nOCIErrNo=%d,szOCIErrMsg=%s\n",nOCIErrNo,szOCIErrMsg);  sendlen=PacketNonselectQR(sendbuf);  /* 分配緩沖區(qū)用于發(fā)送內(nèi)容 */  tpbuf=tpalloc("CARRAY",NULL,sendlen);  memcpy(tpbuf,sendbuf,sendlen);  userlog("%s\n",szOCIErrMsg);  DebugPrint(tpbuf,sendlen);  /*  tpreturn(TPFAIL,nOCIErrNo,tpbuf,sendlen,0);  */  tpreturn(TPSUCCESS,nOCIErrNo,tpbuf,sendlen,0);}/********************************************************************//* 函數(shù): PacketInit                                                 *//* 用途: 初始化數(shù)據(jù)包頭結構                                         *//* 原型: void PacketInit(PacketQR* packet);                         *//* 參數(shù): packet -- 數(shù)據(jù)包頭                                         *//* 返回: 無                                                         *//********************************************************************/void PacketInit(PacketQR *packet){  int i;  memset(packet,'\0',sizeof(PacketQR));  strcpy(packet->PacketID,"8899");  SetStrByte4(packet->PacketLen,sizeof(PacketQR));  strcpy(packet->UserID,"8899");  SetStrByte4(packet->TranID,nOCITranID);  packet->NextFlag='N';  for(i=0;i<i;i++)     packet->DataPart[i]='N';  packet->SQLType='X';}/********************************************************************//* 函數(shù): UnpacketSQL                                                *//* 用途: 解包SQL(暫時不做過多檢查)                                  *//* 原型: int UnpacketSQL(char* buf,long len,char* pszSQL);          *//* 參數(shù): buf -- 數(shù)據(jù)包緩沖區(qū)                                        *//*       len -- 數(shù)據(jù)包長度                                          *//*       pszSQL -- 存放提取出的SQL語句                              *//* 返回: 0 = 成功,同時在pszSQL中存放SQL語句                         *//*       -1 = 失敗,如格式錯誤等                                     *//********************************************************************/int UnpacketSQL(char* buf,long len,char* pszSQL){  PacketQR* hdr;  PartDesc* part;    hdr=(PacketQR*)buf;#ifdef _DEBUG  DebugPrintHeader(hdr);#endif  nOCITranID=GetStrByte4(hdr->TranID);  nOCIRowLimits=GetStrByte4(hdr->RowLimits);  userlog("nOCIRowLimits=%d\n",nOCIRowLimits);  userlog("TranID=%d\n",nOCITranID);  /* 檢查頭是否正常(不含SQL語句視為非法) */  if(hdr->DataPart[DATA_SQL]!='Y')    return(-1);    part=(PartDesc*)(buf+sizeof(PacketQR)+DATA_SQL*sizeof(PartDesc));#ifdef _DEBUG    printf("part=(%d,%d)\n",GetStrByte2(part->PartLen),GetStrByte2(part->PartShift));#endif  strncpy(pszSQL,buf+GetStrByte2(part->PartShift),GetStrByte2(part->PartLen));  pszSQL[GetStrByte2(part->PartLen)]='\0';  myuserlog("SQLStatement:",pszSQL);  return(0);}/* 函數(shù),打包數(shù)據(jù) *//********************************************************************//* 函數(shù): PacketNonselectQR                                          *//* 用途: 打包數(shù)據(jù)(對非SQL Select類型)                               *//* 原型: int PacketNonselectQR(char* buf);                          *//* 參數(shù): buf -- 數(shù)據(jù)包緩沖區(qū)                                        *//* 返回: >0 ,數(shù)據(jù)包長度                                             *//********************************************************************/int PacketNonselectQR(char *buf){  PacketQR* hdr;  PartDesc* partRC, *partOD, *partOV;  int       partRCLen, partODLen, partOVLen;  int       partRCShift, partODShift, partOVShift;  int len1,len2;  char      szODBuf[2048];  char      szOVBuf[2048];  hdr=(PacketQR*)buf;  PacketInit(hdr);  hdr->NextFlag='N';  /* 無后續(xù)結果 */  hdr->DataPart[DATA_SQL]='N';      /* 無SQL語句        */  hdr->DataPart[DATA_RETCODE]='Y';  /* 有返回碼         */  partRC=(PartDesc*)(buf+sizeof(PacketQR));  partRCLen=LEN_BYTE_4+strlen((char*)szOCIErrMsg);  SetStrByte2(partRC->PartLen,partRCLen);  if((nOCIOutNum>0)&&(nOCIErrNo==0))  {    hdr->DataPart[DATA_OUTDESC]='Y';  /* (暫時)無輸出變量 */    hdr->DataPart[DATA_OUTDATA]='Y';    partODLen=PacketOutDesc(szODBuf);    partOVLen=PacketOutValue(szOVBuf);    partOD=(PartDesc*)(buf+sizeof(PacketQR)+sizeof(PartDesc));    partOV=(PartDesc*)(buf+sizeof(PacketQR)+2*sizeof(PartDesc));    partRCShift=sizeof(PacketQR)+3*sizeof(PartDesc);    partODShift=partRCShift+partRCLen;    partOVShift=partODShift+partODLen;    SetStrByte2(partRC->PartShift,partRCShift);    SetStrByte2(partOD->PartLen,partODLen);    SetStrByte2(partOD->PartShift,partODShift);    SetStrByte2(partOV->PartLen,partOVLen);    SetStrByte2(partOV->PartShift,partOVShift);  }  else  {    partRCShift=sizeof(PacketQR)+sizeof(PartDesc);    SetStrByte2(partRC->PartShift,partRCShift);    hdr->DataPart[DATA_OUTDESC]='N';  /* (暫時)無輸出變量 */    hdr->DataPart[DATA_OUTDATA]='N';  }  hdr->DataPart[DATA_FDDESC]='N';   /* 無字段清單       */  hdr->DataPart[DATA_ROWS]='N';     /* 無返回記錄集     */  switch(nOCIFunction)  {  case(FT_SELECT):    hdr->SQLType=ST_SELECT;    break;  case(FT_UPDATE):    hdr->SQLType=ST_UPDATE;    break;  case(FT_INSERT):    hdr->SQLType=ST_INSERT;    break;  case(FT_DELETE):    hdr->SQLType=ST_DELETE;    break;  default:    hdr->SQLType=ST_UNKNOWN;    break;  }    /* 用RowLimits字段返回受影響的記錄數(shù)  */  SetStrByte4(hdr->RowLimits,nOCIAffectedRow);  /* 填寫返回碼信息(5位返回碼+錯誤信息) */  SetStrByte4(buf+partRCShift,nOCIErrNo);  strncpy(buf+partRCShift+LEN_BYTE_4,(char*)szOCIErrMsg,strlen((char*)szOCIErrMsg));  if((nOCIOutNum>0)&&(nOCIErrNo==0))  {    memcpy(buf+partODShift,szODBuf,partODLen);    memcpy(buf+partOVShift,szOVBuf,partOVLen);    return(sizeof(PacketQR)+3*sizeof(PartDesc)+partRCLen+partODLen+partOVLen);  }  else    return(sizeof(PacketQR)+sizeof(PartDesc)+partRCLen);}/********************************************************************//* 函數(shù): PacketSelectQR                                             *//* 用途: 打包數(shù)據(jù)(針對SQL SELECT)                                   *//* 原型: int PacketSelectQR(char* buf,char* fdbuf, long fdlen,      *//*           int rownum, char* rowbuf,long rowlen,int ok);          *//* 參數(shù): buf -- 數(shù)據(jù)包緩沖區(qū)                                        *//*       fdbuf  -- 字段清單緩沖區(qū)                                   *//*       fdlen  -- 字段清單緩沖區(qū)長度                               *//*       rownum -- 記錄行數(shù)                                         *//*       rowbuf -- 已打包的記錄的緩沖區(qū)                             *//*       rowlen -- 記錄緩沖區(qū)長度                                   *//*       ok  -- 包結束標志(1=結束;0=未結束)                         *//* 返回: >0 生成的數(shù)據(jù)包長度                                        *//* 附注: 對于第一個數(shù)據(jù)包要求包含字段清單                           *//*       對最后一個數(shù)據(jù)包包含處理碼信息                             *//*       包序號在全程變量nOCIPacketNo中                             *//********************************************************************/int PacketSelectQR(char *buf,char*fdbuf,long fdlen,int rownum,                   char*rowbuf,long rowlen,int ok){  PacketQR* hdr;  char * pos;  int partno=0;  int len1,len2;  PartDesc* partRetCode;  PartDesc* partFDDesc;  PartDesc* partRows;  hdr=(PacketQR*)buf;  PacketInit(hdr);  hdr->NextFlag=(ok?'N':'Y');       /* ok=1是最后包;=0非最后包 */  hdr->DataPart[DATA_SQL]='N';      /* 無SQL語句        */  hdr->DataPart[DATA_RETCODE]=(ok?'Y':'N');                 /* ok=1最后包有返回碼*/  hdr->DataPart[DATA_OUTDESC]='N';                          /* (暫時)無輸出變量 */  hdr->DataPart[DATA_OUTDATA]='N';  hdr->DataPart[DATA_FDDESC]=((nOCIPacketNo==0)?'Y':'N');   /* 在第一個包中返回字段清單  */  hdr->DataPart[DATA_ROWS]=((rownum>0)?'Y':'N');            /* rownum表示記錄行數(shù)*/  hdr->SQLType=ST_SELECT;   /* 是SQL Select語句 */  /* 填寫返回碼信息(5位返回碼+錯誤信息) */  /* 有返回碼,填寫描述信息 */  pos=buf+sizeof(PacketQR);  if(hdr->DataPart[DATA_RETCODE]=='Y')   {    partRetCode=(PartDesc*)pos;    len1=LEN_BYTE_4+strlen((char*)szOCIErrMsg);    SetStrByte2(partRetCode->PartLen,len1);    SetStrByte2(partRetCode->PartShift,0);    pos+=sizeof(PartDesc);    ++partno;  }  if(hdr->DataPart[DATA_FDDESC]=='Y')  {    partFDDesc=(PartDesc*)pos;    SetStrByte2(partFDDesc->PartLen,fdlen);    SetStrByte2(partFDDesc->PartShift,0);    pos+=sizeof(PartDesc);    ++partno;  }  if(hdr->DataPart[DATA_ROWS]=='Y')  {    partRows=(PartDesc*)pos;      SetStrByte2(partRows->PartLen,rowlen);    SetStrByte2(partRows->PartShift,0);    pos+=sizeof(PartDesc);    ++partno;  }  /* 安排實際位置 */  if(hdr->DataPart[DATA_RETCODE]=='Y')   {    len1=(size_t)(pos-buf);    SetStrByte2(partRetCode->PartShift,len1);    /* 拷貝數(shù)據(jù) */    SetStrByte4(pos,nOCIErrNo);    strncpy(pos+LEN_BYTE_4,(char*)szOCIErrMsg,strlen((char*)szOCIErrMsg));    pos+=GetStrByte2(partRetCode->PartLen);  }  if(hdr->DataPart[DATA_FDDESC]=='Y')  {    len1=(size_t)(pos-buf);    len2=GetStrByte2(partFDDesc->PartLen);    SetStrByte2(partFDDesc->PartShift,len1);    /* 拷貝數(shù)據(jù) */    memcpy(pos,fdbuf,len2);    pos+=len2;  }  if(hdr->DataPart[DATA_ROWS]=='Y')  {    len1=(size_t)(pos-buf);    SetStrByte2(partRows->PartShift,len1);	  /* 拷貝數(shù)據(jù) */    memcpy(pos,rowbuf,rowlen);    pos+=rowlen;  }  return((size_t)(pos-buf));}int PacketOutDesc(char *odbuf){  char *pos=odbuf;  int i, len=0;  *pos=nOCIOutNum;  len+=LEN_BYTE_1;  for(i=0;i<nOCIOutNum;i++)  {    pos=odbuf+len;    len+=sprintf(pos,"%s?S?0?0\n",szOutNames[i]);  }  userlog("%s\n",odbuf);  return(len);}int PacketOutValue(char *ovbuf){  char *pos=ovbuf;  int i, len=0,flen;  for(i=0;i<nOCIOutNum;i++)  {    if(sbNullFlag[i]<0)      *szOutValues[i]='\0';    flen=strlen((char*)szOutValues[i]);    *pos=flen;    len++;pos++;    strncpy(pos,(char*)szOutValues[i],flen);    len+=flen;pos+=flen;  }  *pos='\0';  userlog("%s,%d\n",ovbuf,len);  return(len);}/********************************************************************//* 函數(shù): PacketFDDesc                                               *//* 用途: 打包字段清單                                               *//* 原型: int PacketFDDesc(char* fdbuf);                             *//* 參數(shù): fdbuf -- 字段緩沖區(qū)                                        *//* 返回: >0 生成的數(shù)據(jù)包長度                                        *//* 附注: 字段緩沖區(qū)格式: 個數(shù)(int)+字段信息                         *//*       字段信息:名稱?類型?寬度?小數(shù)點后位數(shù)+回車               *//********************************************************************/int PacketFDDesc(char *fdbuf){  char *pos=fdbuf;  int i, len=0;  char c;  *pos=nOCIFieldNum;  len+=LEN_BYTE_1;  for(i=0;i<nOCIFieldNum;i++)  {    pos=fdbuf+len;    len+=sprintf(pos,"%s?%c?%d?%d\n",desc[i].buf,ConvertDBType(desc[i].dbtype),desc[i].dbsize,desc[i].scale);  }  userlog("%s\n",fdbuf);  return(len);}/********************************************************************//* 函數(shù): ConvertDBType                                              *//* 用途: 轉換數(shù)據(jù)類型代碼                                           *//* 原型: char ConvertDBType(sb2 dbtype);                            *//* 參數(shù): dbtype -- SQL Server返回的數(shù)據(jù)類型                         *//* 返回: 用于發(fā)送的數(shù)據(jù)類型                                         *//********************************************************************/char ConvertDBType(sb2 dbtype){  switch(dbtype)  {  case(VARCHAR2_TYPE):     /* VARCHAR2,STRING==>DBTYPE_STRING */  case(STRING_TYPE):    return(DBTYPE_STRING);  case(INT_TYPE):          /* INT_TYPE ==>DBTYPE_INT          */    return(DBTYPE_INT);  case(NUMBER_TYPE):       /* NUMBER_TYPE,FLOAT_TYPE==>DBTYPE_FLOAT */  case(FLOAT_TYPE):    return(DBTYPE_FLOAT);  case(ROWID_TYPE):        /* ROWID_TYPE ==>DBTYPE_STRING     */    return(DBTYPE_STRING); /* 可能有問題 */  case(DATE_TYPE):         /* DATE_TYPE ==>DBTYPE_DATE        */    return(DBTYPE_DATE);  default:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
婷婷开心激情综合| 成人国产精品免费观看视频| 91久久久免费一区二区| 亚洲精品乱码久久久久| 91麻豆精品国产91久久久久| 日本中文字幕一区| 在线成人av网站| 日韩国产欧美一区二区三区| 337p亚洲精品色噜噜噜| 国产一区激情在线| 综合激情成人伊人| 91精品国产一区二区三区| 激情丁香综合五月| 亚洲欧美日韩中文字幕一区二区三区 | 夜夜亚洲天天久久| 欧美大尺度电影在线| 成人午夜私人影院| 日日夜夜免费精品| 最新久久zyz资源站| 欧美一区二区三区精品| 成人午夜激情视频| 麻豆91精品视频| 一区二区三区中文字幕在线观看| 日韩视频中午一区| 91麻豆免费看片| 国产精品亚洲第一| 日韩高清一区二区| 五月婷婷久久综合| 一卡二卡欧美日韩| 欧美不卡视频一区| 黄网站免费久久| 久久成人综合网| 日韩中文字幕av电影| 亚洲精品国产第一综合99久久| 久久午夜电影网| 久久久国产一区二区三区四区小说 | 激情成人综合网| 国产乱色国产精品免费视频| 日韩精品1区2区3区| 日韩高清国产一区在线| 午夜精品久久久久久久蜜桃app| 亚洲欧美日韩久久| 中文字幕视频一区二区三区久| 国产日韩高清在线| 怡红院av一区二区三区| 亚洲欧美日韩人成在线播放| 亚洲老司机在线| 日韩在线a电影| 国产99久久久国产精品潘金网站| 国产精品一区在线观看乱码| 国产不卡视频一区二区三区| 99精品热视频| 欧美一区2区视频在线观看| 亚洲精品一区二区三区福利| 国产精品国产三级国产aⅴ入口| 最新高清无码专区| 日日骚欧美日韩| www.久久精品| 欧美美女黄视频| 国产精品免费视频观看| 亚洲bdsm女犯bdsm网站| 成人免费视频播放| 91精品国产色综合久久ai换脸| 成人精品小蝌蚪| 91一区二区三区在线播放| 欧美一级二级三级蜜桃| 中文字幕亚洲视频| 国产黄色精品网站| 精品日产卡一卡二卡麻豆| 日韩高清在线一区| 日本乱码高清不卡字幕| 国产精品乱码一区二三区小蝌蚪| 免费高清不卡av| 日韩亚洲欧美在线观看| 爽好多水快深点欧美视频| 一本色道a无线码一区v| 国产亚洲成年网址在线观看| 日韩中文字幕一区二区三区| 91免费在线看| 欧美国产日韩a欧美在线观看 | 精品视频全国免费看| 国产精品久久久一本精品| 日韩制服丝袜先锋影音| 欧美性一区二区| 亚洲六月丁香色婷婷综合久久| 国产精品一品二品| 精品国产乱码久久久久久牛牛| 亚洲成a人在线观看| 国产福利不卡视频| 国产精品九色蝌蚪自拍| 成人成人成人在线视频| 国产精品人妖ts系列视频| 国产一区 二区 三区一级| 欧美成人精品1314www| 久久99久久精品| 久久久777精品电影网影网| 美美哒免费高清在线观看视频一区二区| 在线观看亚洲精品| 久久激情综合网| 日本一区二区免费在线观看视频 | 日本美女一区二区三区| 欧美一区二区三区免费视频| 亚洲精品免费一二三区| 国产成人夜色高潮福利影视| 日本一区二区高清| 成人99免费视频| 欧美精品tushy高清| 国产一区二区三区观看| 中文字幕在线观看一区| 欧美色手机在线观看| 韩日精品视频一区| 亚洲一二三四在线观看| 国产亚洲一区二区三区在线观看| 成人短视频下载| 国产麻豆视频一区二区| 日本不卡高清视频| 亚洲一区二区视频在线观看| 久久亚区不卡日本| 日韩一卡二卡三卡国产欧美| 一本在线高清不卡dvd| 国产成都精品91一区二区三| 青青草国产成人99久久| 自拍偷拍国产精品| 中文字幕在线观看不卡| 精品国产sm最大网站| 91美女在线观看| 欧美在线影院一区二区| 日本精品免费观看高清观看| 成人性生交大片| 99久久国产综合精品色伊| 成人妖精视频yjsp地址| eeuss国产一区二区三区| 波多野洁衣一区| 成人不卡免费av| 色吊一区二区三区| 欧美性一二三区| 欧美成人aa大片| 日韩美女视频一区二区| 最新国产成人在线观看| 亚洲美女淫视频| 日韩综合小视频| 国产又黄又大久久| 欧美色偷偷大香| 日韩一区二区精品在线观看| 久久久精品2019中文字幕之3| 中文子幕无线码一区tr| 亚洲精品亚洲人成人网| 美女视频网站久久| 日韩黄色小视频| 日韩精品欧美精品| 国产成人aaa| 欧美一级二级三级蜜桃| 26uuu久久综合| 日韩精品乱码免费| 国产精品1024久久| 9191精品国产综合久久久久久 | 成人黄色小视频| 日韩精品资源二区在线| 亚洲激情一二三区| 91色|porny| 中文字幕一区二区三区四区不卡 | 国产精品一区二区在线看| 91福利视频久久久久| 91精品国产一区二区三区蜜臀| 亚洲六月丁香色婷婷综合久久 | 91蝌蚪porny| 国产精品久线在线观看| 99在线热播精品免费| 国产午夜亚洲精品理论片色戒 | 亚洲va欧美va人人爽| 欧美写真视频网站| 免费在线观看一区二区三区| 欧美伊人久久久久久午夜久久久久| 欧美国产一区二区| 91在线无精精品入口| 国产精品久久久久久久久久久免费看 | 一本色道久久综合亚洲aⅴ蜜桃 | 成人精品鲁一区一区二区| 日韩欧美区一区二| 一片黄亚洲嫩模| 欧美日高清视频| 青青草国产精品亚洲专区无| 精品理论电影在线| 欧美精品18+| 激情久久久久久久久久久久久久久久| 久久精品视频在线看| 国产精品亚洲专一区二区三区| 最新成人av在线| 久久久久国产一区二区三区四区| 成人国产精品免费观看动漫| 久久一区二区视频| 3d成人动漫网站| 色综合久久久网| 国产精选一区二区三区| 国产婷婷一区二区| 精品国产一区a| 欧美无砖砖区免费| 99视频一区二区| 韩国欧美国产一区| 国模一区二区三区白浆|