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

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

?? htftp.c

?? www工具包. 這是W3C官方支持的www支撐庫. 其中提供通用目的的客戶端的WebAPI: complete HTTP/1.1 (with caching, pipelining, PUT, POS
?? C
?? 第 1 頁 / 共 4 頁
字號:
		if (status == HT_WOULD_BLOCK)		    return HT_WOULD_BLOCK;		else if (status == HT_LOADED) {		    if (ctrl->repcode/100 == 2)			ctrl->substate = NEED_SEGMENT;		    else			ctrl->substate = SUB_ERROR;		} else		    ctrl->substate = SUB_ERROR;		ctrl->sent = NO;	    }	    break;	case NEED_STREAM:	    HTTRACE(PROT_TRACE, "FTP Get Data now in state NEED_STREAM\n");	    /* 	    ** Create the stream pipe FROM the channel to the application.	    ** The target for the input stream pipe is set up using the	    ** stream stack.	    */	    {		HTStream * target = FTP_DIR(data) ?		    HTFTPDir_new(request, ctrl->server, data->type) :		    HTStreamStack(HTAnchor_format(HTRequest_anchor(request)),				  HTRequest_outputFormat(request),				  HTRequest_outputStream(request),				  request, YES);		HTNet_setReadStream(dnet, target);		HTRequest_setOutputConnected(request, YES);	    }	    data_is_active = YES;	    ctrl->substate = NEED_BODY;	    break;	  case NEED_BODY:	      HTTRACE(PROT_TRACE, "FTP Get Data now in state NEED_BODY\n");	      if (data_is_active) {		  if (HTRequest_method(request) == METHOD_PUT) {		      HTParentAnchor * entity = HTRequest_entityAnchor(request);		      const char * document = (const char *) HTAnchor_document(entity);		      int length = (int)HTAnchor_length(entity);		      HTStream * output = 			  (HTStream *)HTChannel_output(HTNet_host(dnet)->channel);		      pcbf = HTRequest_postCallback(request);		      if (pcbf) {			status = (*pcbf)(request, output);		      } else {			status = (*output->isa->put_block)(output,							   document,							   length);			if (status == HT_OK) {			  status = HT_LOADED;			}		      }		      if (status == HT_WOULD_BLOCK) {			  return HT_WOULD_BLOCK;		      } else if ( status == HT_LOADED ) {			ctrl->substate = SUB_SUCCESS;			data->complete |= 3;		      } else if ( status == HT_OK ) {			return HT_WOULD_BLOCK;		      } else {			  ctrl->substate = SUB_ERROR;			  data->stream_error = YES;		      }		      continue;		  } else {		  status = HTHost_read(HTNet_host(dnet), dnet);		  }		  if (status == HT_WOULD_BLOCK)		      return HT_WOULD_BLOCK;		  else if (status == HT_LOADED || status == HT_CLOSED || status == HT_OK) {		      HTDoClose(dnet);		      data->complete |= 1; 		      if (data->complete >= 3)			  ctrl->substate = SUB_SUCCESS;		      else			  data_is_active = NO;		  } else {		      ctrl->substate = SUB_ERROR;		      data->stream_error = YES;		  }	      } else {		  status = HTHost_read(HTNet_host(cnet), cnet);		  if (status == HT_WOULD_BLOCK)		      return HT_WOULD_BLOCK;		  else if (status == HT_LOADED || status == HT_CLOSED) {		      if (ctrl->repcode/100 == 2) {			  data->complete |= 2;			  if (data->complete >= 3)			      ctrl->substate = SUB_SUCCESS;			  else			      data_is_active = YES;		      } else			  ctrl->substate = SUB_ERROR;		  } else		      ctrl->substate = SUB_ERROR;	      }	      break;	  case SUB_ERROR:	    HTTRACE(PROT_TRACE, "FTP Get Data now in state SUB_ERROR\n");	    HTRequest_addError(request, ERR_FATAL, NO, HTERR_NOT_FOUND,			       NULL, 0, "HTFTPGetData");	    ctrl->substate = 0;	    HT_FREE(segment);	    return HT_ERROR;	    break;	  case SUB_SUCCESS:	    HTTRACE(PROT_TRACE, "FTP Get Data now in state SUB_SUCCESS\n");	    ctrl->substate = 0;	    HT_FREE(segment);	    return HT_LOADED;	    break;	}    }}/* ------------------------------------------------------------------------- *//*	Retrieve File from Server as an atomic action. **	-----------------------------------------------**	Given a hypertext address, this routine loads a document.**** On entry,**      request		This is the request structure**	returns		HT_ERROR	Error has occured in call back**			HT_OK		Call back was OK*/PRIVATE int FTPEvent (SOCKET soc, void * pVoid, HTEventType type);PUBLIC int HTLoadFTP (SOCKET soc, HTRequest * request){    HTNet * cnet = HTRequest_net(request);    ftp_ctrl * ctrl = NULL;    ftp_data * data = NULL;    HTParentAnchor * anchor = HTRequest_anchor(request);    char * url = HTAnchor_physical(anchor);    /*    ** Initiate a new FTP ctrl and data structure and bind to request structure    ** This is actually state FTP_BEGIN, but it can't be in the state    ** machine as we need the structure first.    */    HTTRACE(PROT_TRACE, "FTP......... Looking for `%s\'\n" _ url);    if ((ctrl = (ftp_ctrl *) HT_CALLOC(1, sizeof(ftp_ctrl))) == NULL ||	(data = (ftp_data *) HT_CALLOC(1, sizeof(ftp_data))) == NULL)	HT_OUTOFMEM("HTLoadFTP");    ctrl->cmd = HTChunk_new(128);    ctrl->state = FTP_BEGIN;    ctrl->server = FTP_UNSURE;    ctrl->dnet = HTNet_dup(cnet);    ctrl->cnet = cnet;    HTNet_setContext(cnet, ctrl);    HTNet_setEventCallback(cnet, FTPEvent);    HTNet_setEventParam(cnet, ctrl);    HTNet_setRawBytesCount(ctrl->dnet, YES);    /* for now, the dnet comes back to the same place    ** - vestigial from when the callback was from the request object    */    HTNet_setContext(ctrl->dnet, data);    HTNet_setEventCallback(ctrl->dnet, FTPEvent);    HTNet_setEventParam(ctrl->dnet, ctrl);    return FTPEvent(soc, ctrl, HTEvent_BEGIN);}PRIVATE int FTPEvent (SOCKET soc, void * pVoid, HTEventType type){    ftp_ctrl * ctrl = (ftp_ctrl *) pVoid;    ftp_data * data = (ftp_data *) HTNet_context(ctrl->dnet);    int status = HT_ERROR;    HTNet * cnet = ctrl->cnet;    HTRequest * request = HTNet_request(cnet);    HTParentAnchor * anchor = HTRequest_anchor(request);    char * url = HTAnchor_physical(anchor);    HTHost *host = HTNet_host(cnet);    if (type == HTEvent_CLOSE) {			      /* Interrupted */        if (soc == HTNet_socket(cnet) && data->complete<1)	    FTPCleanup(request, HT_INTERRUPTED);	else	    FTPCleanup(request, HT_LOADED);	return HT_OK;    } else if (type == HTEvent_TIMEOUT) {	/*	** Don't time out the control connection if we are actually recieving data	** on the data connection	*/	if (!(soc == HTNet_socket(cnet) && !(data->complete & 1) && HTNet_bytesRead(ctrl->dnet)>0)) {	    HTRequest_addError(request, ERR_FATAL, NO, HTERR_TIME_OUT, NULL, 0, "HTLoadHTTP");	    FTPCleanup(request, HT_TIMEOUT);	}	return HT_OK;    } else {	ctrl = (ftp_ctrl *) HTNet_context(cnet);	/* Get existing copy */	data = (ftp_data *) HTNet_context(ctrl->dnet);    }    /* Now jump into the machine. We know the state from the previous run */    while (1) {	switch (ctrl->state) {	  case FTP_BEGIN:	      HTTRACE(PROT_TRACE, "FTP Event... now in state FTP_BEGIN\n");	      /* Only handle GET requests for now */	      if (HTRequest_method(request) != METHOD_GET &&	          HTRequest_method(request) != METHOD_PUT ) {		  HTTRACE(PROT_TRACE, "FTP Event... This module only supports the GET or PUT methods\n");		  ctrl->state = FTP_ERROR;		  break;	      }	      HTFTPParseURL(request, url, ctrl, data);	      /* The following is added by Neil Griffin, GAIN Software */	      /*	      ** If the user hasn't specified a permanent transfer type, then	      ** use the transfer type specified at the end of the URL.	      */	      if (g_FTPTransferMode == FTP_DEFAULT_TRANSFER_MODE) {		  switch (data->type) {		  case 'a' : data->type = 'A'; break;		  case 'A' : data->type = 'A'; break;		  case 'i' : data->type = 'I'; break;		  case 'I' : data->type = 'I'; break;		  case 'd' : FTPListType(data, ctrl->server); break;		  case 'D' : FTPListType(data, ctrl->server); break;		  default  : data->type = 'I'; break;		  }		  /* Otherwise, use the permanent transfer type specified by the user. */	      } else {		  switch (g_FTPTransferMode) {		  case FTP_ASCII_TRANSFER_MODE  : data->type = 'A'; break;		  case FTP_BINARY_TRANSFER_MODE : data->type = 'I'; break;		  case FTP_DIR_TRANSFER_MODE    : FTPListType(data, ctrl->server); break;		  default                       : data->type = 'I'; break;		  }	      }	      HTTRACE(PROT_TRACE, "FTP Event... Transfer mode set to '%c'\n" _ data->type);	      /*	      **  See if we can get any hints to what we might expect content wise.	      */	      if (!FTP_DIR(data)) HTBind_getAnchorBindings(anchor);              /* Ready for next state */              ctrl->state = FTP_NEED_CCON;              break;	case FTP_NEED_CCON:	    HTTRACE(PROT_TRACE, "FTP Event... now in state FTP_NEED_CONN\n");	    status = HTHost_connect(host, cnet, url);	    host = HTNet_host(cnet);	    if (status == HT_OK) {		/*		** Check the protocol class to see if we have connected to a		** the right class of server, in this case HTTP.		*/		{		    char * s_class = HTHost_class(host);		    if (s_class && strcasecomp(s_class, "ftp")) {			HTRequest_addError(request, ERR_FATAL, NO, HTERR_CLASS,					   NULL, 0, "HTLoadNews");			ctrl->state = FTP_ERROR;			break;		    }		    HTHost_setClass(host, "ftp");		}		/* Check persistent connection */		if (HTNet_persistent(cnet)) {		    ctrl->server = HTHost_version(host);		    HTTRACE(PROT_TRACE, "FTP Server.. Cache says type %d server\n" _ 				ctrl->server);		    ctrl->reset = 1;		} else		    HTNet_setPersistent(cnet, YES, HT_TP_SINGLE);		/* 		** Create the stream pipe FROM the channel to the application.		** The target for the input stream pipe is set up using the		** stream stack.		*/		{		    HTStream * readstream = FTPStatus_new(request, ctrl, host);		    HTNet_setReadStream(cnet, readstream);		}		/*		** Create the stream pipe TO the channel from the application		** and hook it up to the request object		*/		{		    HTOutputStream * output = HTNet_getOutput(cnet, NULL, 0);		    HTRequest_setInputStream(request, (HTStream *) output);		}		/*		** Set up concurrent read/write if this request isn't the		** source for a PUT or POST. As source we don't start reading		** before all destinations are ready. If destination then		** register the input stream and get ready for read		*/		if (HTRequest_isPostWeb(request)) {		    HTEvent * event = HTNet_event(cnet);		    HTEvent_register(HTNet_socket(cnet), HTEvent_READ, event);		    HTRequest_linkDestination(request);		}		ctrl->state = FTP_NEED_LOGIN;	    } else if (status == HT_WOULD_BLOCK || status == HT_PENDING)		return HT_OK;	    else		ctrl->state = FTP_ERROR;	       /* Error or interrupt */	    break;	  case FTP_NEED_LOGIN:	    HTTRACE(PROT_TRACE, "FTP Event... now in state FTP_NEED_LOGIN\n");	    status = HTFTPLogin(request, cnet, ctrl); 	    if (status == HT_WOULD_BLOCK) return HT_OK;	    ctrl->state = (status == HT_OK) ? FTP_NEED_DCON : FTP_ERROR;	    break;	  case FTP_NEED_DCON:	    HTTRACE(PROT_TRACE, "FTP Event... now in state FTP_NEED_DCON\n");	    status = HTFTPDataConnection(request, cnet, ctrl, data);	    if (status == HT_WOULD_BLOCK) return HT_OK;	    if (status == HT_OK)		ctrl->state = (data->type=='N') ?		    FTP_NEED_SERVER : FTP_NEED_DATA;	    else		ctrl->state = FTP_ERROR;	    break;	  case FTP_NEED_DATA:	    HTTRACE(PROT_TRACE, "FTP Event... now in state FTP_NEED_DATA\n");	    status = HTFTPGetData(request, cnet, soc, ctrl, data); 	    if (status == HT_WOULD_BLOCK) return HT_OK;	    if (status == HT_LOADED)		ctrl->state = FTP_SUCCESS;	    else if (status == HT_OK)		ctrl->state = FTP_NEED_DCON;	    else if (HTRequest_method(request) == METHOD_PUT)		ctrl->state = FTP_ERROR;	    else if (!FTP_DIR(data) && !data->stream_error) {		FTPListType(data, ctrl->server);		ctrl->state = FTP_NEED_SERVER;         /* Try a dir instead? */	    } else		ctrl->state = FTP_ERROR;	    break;	  case FTP_NEED_SERVER:	    HTTRACE(PROT_TRACE, "FTP Event... now in state FTP_NEED_SERVER\n");	    status = HTFTPServerInfo(request, cnet, ctrl, data);	    if (status == HT_WOULD_BLOCK) return HT_OK;	    ctrl->state = FTP_NEED_DATA;	    break;	  case FTP_SUCCESS:	    HTTRACE(PROT_TRACE, "FTP Event... now in state FTP_SUCCESS\n");	    FTPCleanup(request, HT_LOADED);	    return HT_OK;	    break;	    	  case FTP_ERROR:	    HTTRACE(PROT_TRACE, "FTP Event... now in state FTP_ERROR\n");	    FTPCleanup(request, HT_ERROR);	    return HT_OK;	    break;	}    } /* End of while(1) */}PUBLIC void HTFTP_setTransferMode(FTPTransferMode mode){    g_FTPTransferMode = mode;}PUBLIC FTPTransferMode HTFTP_transferMode (void){    return g_FTPTransferMode;}PUBLIC void HTFTP_setControlMode (FTPControlMode mode){    g_FTPControlMode = mode;}PUBLIC FTPControlMode HTFTP_controlMode (void){    return g_FTPControlMode;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美大片国产精品| 国产不卡在线播放| 欧美成人一区二区| 粉嫩在线一区二区三区视频| 综合色中文字幕| 色综合久久综合网欧美综合网| 亚洲激情校园春色| 精品国产人成亚洲区| 成人av电影在线播放| 日日骚欧美日韩| 欧美一区二区二区| 91影视在线播放| 蜜桃视频一区二区三区在线观看| 亚洲欧美另类综合偷拍| 久久女同性恋中文字幕| 日本道色综合久久| 久久福利视频一区二区| 午夜精品久久久久久久蜜桃app| 久久亚洲影视婷婷| 日韩视频一区二区| 欧美视频一区二区在线观看| 高清国产午夜精品久久久久久| 天天影视网天天综合色在线播放 | 欧美日韩精品系列| 国产精品综合二区| 欧美a级理论片| 国产欧美日韩另类一区| 日韩欧美亚洲国产精品字幕久久久| 色伊人久久综合中文字幕| 国产精品自拍av| 国产精品一区二区在线播放| 日韩福利电影在线观看| 一二三区精品视频| 中文字幕一区三区| 中日韩免费视频中文字幕| 2022国产精品视频| 日韩午夜在线观看| 日韩美女在线视频| 3751色影院一区二区三区| 欧美性猛交一区二区三区精品| 久久国产麻豆精品| 免费人成精品欧美精品| 香蕉久久夜色精品国产使用方法 | 一区二区高清在线| 国产精品少妇自拍| 欧美久久久久久蜜桃| 欧美艳星brazzers| 色婷婷久久久综合中文字幕| 91麻豆swag| 成人丝袜18视频在线观看| 成人av网站在线| 成人免费视频网站在线观看| 国产精品影音先锋| av在线一区二区三区| 成人福利视频网站| 99精品偷自拍| 欧美日韩一级二级| 欧美精品一级二级| 日韩你懂的在线播放| 久久久久久夜精品精品免费| 久久久久久久久久久黄色| 久久一区二区三区四区| 亚洲国产精品二十页| 国产精品久久久久久久久搜平片| 国产精品萝li| 亚洲gay无套男同| 麻豆视频观看网址久久| 精品综合免费视频观看| 成人av小说网| 国产精品免费丝袜| 一区二区三区中文字幕精品精品| 午夜日韩在线观看| 精品亚洲成a人在线观看| 国产精品中文字幕欧美| 国产成人精品三级| 91麻豆精东视频| 欧美日韩不卡在线| 日韩免费观看高清完整版在线观看| 国产精品色噜噜| 亚洲综合在线观看视频| 午夜精品免费在线观看| 韩国成人福利片在线播放| av电影在线观看完整版一区二区| 在线免费亚洲电影| 久久免费看少妇高潮| 亚洲天堂福利av| 日韩精品电影在线观看| 成人爽a毛片一区二区免费| 色av成人天堂桃色av| 欧美一区二区三区喷汁尤物| 欧美探花视频资源| 久久久久综合网| 亚洲免费av高清| 综合久久久久久| 久久成人18免费观看| 97久久人人超碰| 色噜噜偷拍精品综合在线| 精品国产凹凸成av人网站| 亚洲人xxxx| 美脚の诱脚舐め脚责91 | 最新日韩在线视频| 久久99国产精品免费| 99精品视频免费在线观看| av在线一区二区| 精品av综合导航| 亚洲在线视频免费观看| 日韩欧美中文字幕制服| 亚洲成av人片在线| 成人一区二区三区在线观看| 欧美一区二区黄| 亚洲va欧美va人人爽| 成人动漫av在线| 日韩精品中午字幕| 欧美韩国一区二区| 六月丁香婷婷久久| 欧美色区777第一页| 久久视频一区二区| 久久国产麻豆精品| 欧美人xxxx| 一区二区三区高清| fc2成人免费人成在线观看播放| 欧美大片一区二区| 日韩福利电影在线| 94-欧美-setu| 成人欧美一区二区三区视频网页 | 亚洲图片欧美色图| 99riav一区二区三区| 中文av一区特黄| 黑人巨大精品欧美一区| 欧美精品精品一区| 日本在线播放一区二区三区| 在线视频你懂得一区二区三区| 国产清纯在线一区二区www| 国产在线精品视频| 日韩欧美中文字幕精品| 亚洲美腿欧美偷拍| 欧美性欧美巨大黑白大战| 亚洲视频一二三区| 男人的天堂亚洲一区| 91麻豆精品国产自产在线观看一区 | 色综合天天在线| 久久久噜噜噜久噜久久综合| 国产成人精品在线看| 久久精品一区二区三区四区| 激情综合网天天干| 国产日韩精品久久久| 国产精品资源在线| 国产视频在线观看一区二区三区| 成人性生交大合| 日韩一区日韩二区| 在线视频国产一区| 亚洲成av人片| 欧美高清一级片在线| 老司机午夜精品99久久| 久久这里都是精品| 韩国欧美国产一区| 国产日韩三级在线| 99re8在线精品视频免费播放| 最新久久zyz资源站| 在线视频亚洲一区| 亚洲高清免费观看| 日韩欧美成人激情| 粉嫩av亚洲一区二区图片| 国产精品久久久久永久免费观看| 91麻豆免费观看| 亚洲人xxxx| 欧美卡1卡2卡| 国产一区二区毛片| 国产精品看片你懂得| 粉嫩欧美一区二区三区高清影视| 337p日本欧洲亚洲大胆色噜噜| 国产成人高清视频| 久久99精品国产.久久久久久 | 国产精品私人自拍| 91在线你懂得| 亚洲国产欧美在线| 欧美日韩精品福利| 国产91综合一区在线观看| 椎名由奈av一区二区三区| 91老司机福利 在线| 久久综合九色综合久久久精品综合| 成人免费高清在线| 三级在线观看一区二区| 中文字幕欧美三区| 日韩欧美亚洲一区二区| 91色在线porny| 国产精一区二区三区| 丝袜美腿一区二区三区| 国产精品女主播在线观看| 日韩欧美在线一区二区三区| 99久久精品免费观看| 激情国产一区二区| 亚洲最大成人网4388xx| 中文字幕不卡在线播放| 日韩一区二区三区精品视频| 色综合天天做天天爱| 国产精品一区二区三区网站| 色呦呦网站一区| 国产精品一品视频| 日本亚洲一区二区|