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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? http.c

?? www工具包. 這是W3C官方支持的www支撐庫(kù). 其中提供通用目的的客戶(hù)端的WebAPI: complete HTTP/1.1 (with caching, pipelining, PUT, POS
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
{    return (*me->target->isa->flush)(me->target);}PRIVATE int HTTPStatus_free (HTStream * me){    int status = HT_OK;    if (me->target) {	if ((status = (*me->target->isa->_free)(me->target))==HT_WOULD_BLOCK)	    return HT_WOULD_BLOCK;    }    HT_FREE(me);    return status;}PRIVATE int HTTPStatus_abort (HTStream * me, HTList * e){    if (me->target)	ABORT_TARGET;    HT_FREE(me);    HTTRACE(PROT_TRACE, "HTTPStatus.. ABORTING...\n");    return HT_ERROR;}/*	HTTPStatus Stream**	-----------------*/PRIVATE const HTStreamClass HTTPStatusClass ={		    "HTTPStatus",    HTTPStatus_flush,    HTTPStatus_free,    HTTPStatus_abort,    HTTPStatus_put_character,    HTTPStatus_put_string,    HTTPStatus_put_block};PUBLIC HTStream * HTTPStatus_new (HTRequest *	request,				  void *	param,				  HTFormat	input_format,				  HTFormat	output_format,				  HTStream *	output_stream){    HTStream * me;    if ((me = (HTStream  *) HT_CALLOC(1, sizeof(HTStream))) == NULL)        HT_OUTOFMEM("HTTPStatus_new");    me->isa = &HTTPStatusClass;    if (request) {	HTNet * net = HTRequest_net(request);        /* Get existing copy */	http_info * http = (http_info *) HTNet_context(net);	me->request = request;	me->http = http;	http->next = HTTP_ERROR;	me->state = EOL_BEGIN;	return me;    } else	return HTErrorStream();}/* ------------------------------------------------------------------------- *//*		Load Document from HTTP Server			     HTLoadHTTP**		==============================****	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 HTTPEvent (SOCKET soc, void * pVoid, HTEventType type);PUBLIC int HTLoadHTTP (SOCKET soc, HTRequest * request){    http_info *http;			    /* Specific protocol information */    HTParentAnchor *anchor = HTRequest_anchor(request);    HTNet * net = HTRequest_net(request);    /*    ** Initiate a new http structure and bind to request structure    ** This is actually state HTTP_BEGIN, but it can't be in the state    ** machine as we need the structure first.    */    HTTRACE(PROT_TRACE, "HTTP........ Looking for `%s\'\n" _ 			    HTAnchor_physical(anchor));    if ((http = (http_info *) HT_CALLOC(1, sizeof(http_info))) == NULL)      HT_OUTOFMEM("HTLoadHTTP");    http->net = net;    http->request = request;    HTNet_setContext(net, http);    HTNet_setEventCallback(net, HTTPEvent);    HTNet_setEventParam(net, http);  /* callbacks get http* */    return HTTPEvent(soc, http, HTEvent_BEGIN);	    /* get it started - ops is ignored */}PRIVATE int FlushPutEvent (HTTimer * timer, void * param, HTEventType type){    http_info * http = (http_info *) param;    HTStream * input = HTRequest_inputStream(http->request);    HTPostCallback * pcbf = HTRequest_postCallback(http->request);    int status = HT_ERROR;    http->usedTimer = YES;    if (timer != http->timer)	HTDEBUGBREAK("HTTP timer %p not in sync\n" _ timer);    HTTRACE(PROT_TRACE, "Uploading... Flushing %p with timer %p\n" _ http _ timer);    /*    **  Call the callback that will provide the data to save    **  If the callback returns HT_OK then call it again until    **  it returns something else than HT_OK.    */    if (http && input && pcbf) {	status = (*pcbf)(http->request, input);	HTTRACE(PROT_TRACE, "Uploading... Callback returned %d\n" _ status);	    }    /*    **  If the callback returned something else than HT_OK then delete    **  the timer, otherwise update it to a much shorter expiration    **  time so that we can write some more data to the net.    */    if (status != HT_OK) {	HTTimer_delete(http->timer);	http->timer = NULL;    } else if (!http->repetitive_writing) {	http->timer = HTTimer_new(NULL, FlushPutEvent, http, HTRepeatWrite, YES, YES);	http->repetitive_writing = YES;    }    return HT_OK;}PRIVATE int HTTPEvent (SOCKET soc, void * pVoid, HTEventType type){    http_info * http = (http_info *)pVoid;    int status = HT_ERROR;    HTNet * net = http->net;    HTRequest * request = HTNet_request(net);    HTParentAnchor * anchor = HTRequest_anchor(request);    HTHost * host = HTNet_host(net);    /*    **  Check whether we have been interrupted or timed out    */    if (type == HTEvent_BEGIN) {	http->next = HTTP_OK;	http->result = HT_ERROR;    } else if (type == HTEvent_CLOSE) {        long read_len = HTNet_bytesRead(net);        long doc_len = HTAnchor_length(anchor);        /*        ** It is OK to get a close if a) we don't pipeline and b)        ** we have the expected amount of data, and c) we haven't	** recieved a 100 Continue code. In case we don't        ** know how much data to expect, we must accept it asis.        */        if (HTHost_numberOfOutstandingNetObjects(host) == 1 &&	    http->result != HT_CONTINUE && (doc_len<0 || doc_len==read_len)) {	    HTTPCleanup(request, http->result);		/* Raffaele Sena: was HT_LOADED */        } else {            HTRequest_addError(request, ERR_FATAL, NO, HTERR_INTERRUPTED,			       NULL, 0, "HTLoadHTTP");	    HTTPCleanup(request, HT_INTERRUPTED);        }	return HT_OK;    } else if (type == HTEvent_TIMEOUT) {	HTRequest_addError(request, ERR_FATAL, NO, HTERR_TIME_OUT,			   NULL, 0, "HTLoadHTTP");	HTTPCleanup(request, HT_TIMEOUT);	return HT_OK;    } else if (type == HTEvent_END) {	HTTPCleanup(request, http->result);	return HT_OK;    } else if (type == HTEvent_RESET) {	HTTPCleanup(request, HT_RECOVER_PIPE);	http->state = HTTP_BEGIN;	return HT_OK;    }    /* Now jump into the machine. We know the state from the previous run */    while (1) {	switch (http->state) {	case HTTP_BEGIN:	    status = HTHost_connect(host, net, HTAnchor_physical(anchor));	    host = HTNet_host(net);            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. If we don't 		**  know the server then assume a HTTP/1.0		*/		{		    char * s_class = HTHost_class(host);		    if (!s_class) {			if (HTRequest_proxy(request) == NULL) {			    HTAssocList * alist = HTRequest_connection(request);			    if (!(alist && HTAssocList_findObject(alist, "close")))				HTRequest_addConnection(request, "Keep-Alive", "");			}			HTHost_setClass(host, "http");		    } else if (strcasecomp(s_class, "http")) {			HTRequest_addError(request, ERR_FATAL, NO, HTERR_CLASS,					   NULL, 0, "HTLoadHTTP");			http->state = HTTP_ERROR;			break;		    }		}		if (ConnectionMode & HTTP_11_NO_PIPELINING) {		    HTTRACE(PROT_TRACE, "HTTP........ Mode is HTTP/1.1 WITH NO PIPELINING\n");		    HTRequest_setFlush(request, YES);		} else if (ConnectionMode & HTTP_FORCE_10) {		    HTTRACE(PROT_TRACE, "HTTP........ Mode is FORCE HTTP/1.0\n");		    HTHost_setVersion(host, HTTP_10);		}		if (HTNet_preemptive(net)) {		    HTTRACE(PROT_TRACE, "HTTP........ Force flush on preemptive load\n");		    HTRequest_setFlush(request, YES);		}		/* Jump to next state */		http->state = HTTP_NEED_STREAM;	    } else if (status == HT_WOULD_BLOCK || status == HT_PENDING) {		return HT_OK;	    } else if (status == HT_NO_HOST) {		http->result = HT_NO_HOST;		http->state = HTTP_ERROR;	    } else			http->state = HTTP_ERROR;	       /* Error or interrupt */	    break;	    	case HTTP_NEED_STREAM:	    /* 	    ** Create the stream pipe FROM the channel to the application.	    ** The target for the input stream pipe is set up using the	    ** stream stack.	    */	    {            /*            **  during a recovery, we might keep the same HTNet object.            **  if so, reuse it's read stream             */	    HTStream * me = HTNet_readStream( net );            if ( me == NULL ) {                me = HTStreamStack(WWW_HTTP,				   HTRequest_outputFormat(request),				   HTRequest_outputStream(request),				   request, YES);#ifdef HTDEBUG		if (PROT_TRACE) {		    if (!htfp) htfp = fopen(HTTP_OUTPUT, "ab");		    if (htfp) {			me = HTTee(me, HTFWriter_new(request, htfp, YES), NULL);			HTTRACE(PROT_TRACE, "HTTP........ Dumping response to `%s\'\n" _ HTTP_OUTPUT);		    }		}#endif /* HTDEBUG */		HTNet_setReadStream(net, me);            }            HTRequest_setOutputConnected(request, YES);	    }	    /*	    ** Create the stream pipe TO the channel from the application	    ** and hook it up to the request object	    */	    {		HTChannel * channel = HTHost_channel(host);		HTOutputStream * output = HTChannel_getChannelOStream(channel);		int version = HTHost_version(host);		HTStream * app = NULL;		#ifdef HTDEBUG		if (PROT_TRACE) {		    if (!htfp) htfp = fopen(HTTP_OUTPUT, "ab");		    if (htfp) {			output = (HTOutputStream *)			    HTTee((HTStream *) output, HTFWriter_new(request, htfp, YES), NULL);			HTTRACE(PROT_TRACE, "HTTP........ Dumping request to `%s\'\n" _ HTTP_OUTPUT);		    }		}	#endif /* HTDEBUG */		app = HTMethod_hasEntity(HTRequest_method(request)) ?		    HTMIMERequest_new(request,				      HTTPRequest_new(request, (HTStream *) output, NO,						      version),				      YES) :		    HTTPRequest_new(request, (HTStream *) output, YES, version);		HTRequest_setInputStream(request, app);	    }	    /*	    ** 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_isDestination(request)) {		HTHost_register(host, net, HTEvent_READ);		HTRequest_linkDestination(request);	    }	    http->state = HTTP_CONNECTED;	    type = HTEvent_WRITE;			    /* fresh, so try a write */	    break;	    /* As we can do simultanous read and write this is now one state */	  case HTTP_CONNECTED:	      if (type == HTEvent_WRITE) {		  HTStream * input = HTRequest_inputStream(request);		  HTPostCallback * pcbf = HTRequest_postCallback(request);		  status = HTRequest_flush(request) ?		      HTHost_forceFlush(host) : (*input->isa->flush)(input);		  /*		  **  Check to see if we are uploading something or just a normal		  **  GET kind of thing.		  */		  		  /*		  ** JK: don't continue sending things thru the network		  ** if the flush resulted in an error or if the connection		  ** is closed 		  */		  if ((status != HT_ERROR) && status != HT_CLOSED) {		      if (pcbf) {		          if (http->lock == NO) {			      int retrys = HTRequest_retrys(request);			      ms_t delay = retrys > 3 ? HTSecondWriteDelay : HTFirstWriteDelay;			      if (!http->timer && !http->usedTimer) {				  http->timer = HTTimer_new(NULL, FlushPutEvent,							http, delay, YES, NO);				  HTTRACE(PROT_TRACE, "Uploading... Holding %p for %lu ms using time %p\n" _ 					  http _ delay _ http->timer);				  HTHost_register(host, net, HTEvent_READ);			      }			      http->lock = YES;			  }			  type = HTEvent_READ;		      } else {			/*			**  Check to see if we can start a new request			**  pending in the host object.			*/			HTHost_launchPending(host);			type = HTEvent_READ;		      }		  }		  /* Now check the status code */		  if (status == HT_WOULD_BLOCK)		      return HT_OK;		  else if (status == HT_PAUSE || status == HT_LOADED) {		      type = HTEvent_READ;		  } else if (status==HT_ERROR)		      http->state = HTTP_RECOVER_PIPE;	      } else if (type == HTEvent_FLUSH) {		  HTStream * input = HTRequest_inputStream(request);		  if (input == NULL)		      return HT_ERROR;		  return (*input->isa->flush)(input);	      } else if (type == HTEvent_READ) {		  status = HTHost_read(host, net);		  if (status == HT_WOULD_BLOCK)		      return HT_OK;		  else if (status == HT_CONTINUE) {		      HTTRACE(PROT_TRACE, "HTTP........ Continuing\n");		      http->lock = NO;		      continue;		  } else if (status==HT_LOADED)		      http->state = http->next;	/* Jump to next state (OK or ERROR) */		  else if (status==HT_CLOSED)		      http->state = HTTP_RECOVER_PIPE;		  else if (status == HT_ERROR)		      http->state = HTTP_KILL_PIPE;		  else		      http->state = HTTP_ERROR;	      } else {		  http->state = HTTP_ERROR;	/* don't know how to handle OOB */	      }	      break;	  case HTTP_OK:	    HTTPCleanup(request, http->result);	    return HT_OK;	    break;          case HTTP_RECOVER_PIPE:	  {	      /*	      ** If this is a persistent connection and we get a close	      ** then it is an error and we should recover from it by	      ** restarting the pipe line of requests if any	      */	      if (HTHost_isPersistent(host) && !HTHost_closeNotification(host)) {		  if (host == NULL) return HT_ERROR;		  HTRequest_setFlush(request, YES);		  /*		  **  If we already have recovered more than we want and		  **  this call returns NO then simply kill the pipe.		  **  Otherwise we may loop forever.		  */		  if (HTHost_recoverPipe(host) != YES) {		      HTRequest_addError(request, ERR_FATAL, NO, HTERR_BAD_REPLY,					 NULL, 0, "HTTPEvent");		      http->state = HTTP_KILL_PIPE;		      break;		  }		  return HT_OK;	      } else		  http->state = HTTP_OK;	  }	  break;          case HTTP_KILL_PIPE:	      if (host == NULL) return HT_ERROR;	      HTHost_killPipe(host);	      return HT_OK;	      break;	  case HTTP_ERROR:	      HTTPCleanup(request, http->result);	      return HT_OK;	      break;	default:	    HTDEBUGBREAK("Bad http state %d\n" _ http->state);	}    } /* End of while(1) */}    PUBLIC void HTTP_setConnectionMode (HTTPConnectionMode mode){    ConnectionMode = mode;}PUBLIC HTTPConnectionMode HTTP_connectionMode (void){    return ConnectionMode;}PUBLIC BOOL HTTP_setBodyWriteDelay (ms_t first_try, ms_t second_try){	if (first_try > 20 && second_try >= first_try) {	    HTFirstWriteDelay = first_try;		HTSecondWriteDelay = second_try;		return YES;	}	return NO;}PUBLIC void HTTP_bodyWriteDelay (ms_t * first_try, ms_t * second_try){	*first_try = HTFirstWriteDelay;	*second_try = HTSecondWriteDelay;}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美三级在线视频| 国产精品毛片久久久久久| 国产福利精品一区二区| 欧美手机在线视频| 欧美亚洲禁片免费| 午夜精品一区二区三区三上悠亚 | 欧美浪妇xxxx高跟鞋交| 欧美在线短视频| 欧美一级黄色片| 欧美a级一区二区| 久久精品亚洲麻豆av一区二区| 久久国产乱子精品免费女| 国产女主播一区| 在线视频中文字幕一区二区| 一区二区三区在线观看网站| 亚洲最大成人综合| 国产精品系列在线播放| 91猫先生在线| 最新欧美精品一区二区三区| 专区另类欧美日韩| 日韩福利电影在线| 极品尤物av久久免费看| 中文字幕亚洲在| 亚洲品质自拍视频网站| 亚洲国产日日夜夜| 日本sm残虐另类| 国产精品中文有码| 99这里都是精品| 91成人免费电影| 日韩精品专区在线影院观看| 欧美变态tickle挠乳网站| 久久综合狠狠综合| 中文字幕日韩一区| 亚洲高清一区二区三区| 久久爱另类一区二区小说| 成人av资源在线观看| 在线免费视频一区二区| 精品播放一区二区| 亚洲欧美成人一区二区三区| 偷拍一区二区三区| 国产成人精品一区二区三区网站观看| 99久久国产综合精品女不卡| 在线不卡中文字幕| 国产色产综合色产在线视频| 一二三四社区欧美黄| 精品一区二区三区香蕉蜜桃 | 91在线视频在线| 91精品国模一区二区三区| 国产精品国产精品国产专区不片 | 成人精品国产一区二区4080| 国产一区二区三区av电影| 欧美日韩国产a| 国产精品无码永久免费888| 一区二区三区在线免费播放| 91色在线porny| 亚洲h精品动漫在线观看| 日韩一区二区三区视频在线| 麻豆精品国产传媒mv男同 | 日韩成人av影视| 91免费小视频| 国产精品资源网| 一区二区三区久久| 中文字幕巨乱亚洲| 欧美日韩国产区一| 91福利小视频| 国产激情偷乱视频一区二区三区| 国产精品短视频| 久久久91精品国产一区二区精品 | 91丨国产丨九色丨pron| 欧美刺激脚交jootjob| 国产一区在线视频| 亚洲精品乱码久久久久久黑人| 欧洲精品一区二区| 另类人妖一区二区av| 国产精品污污网站在线观看| 在线播放亚洲一区| 国产成人精品aa毛片| 久久亚洲综合av| 欧美性大战久久久久久久| 成人美女在线视频| 一区二区三区 在线观看视频 | 国产.欧美.日韩| 久久精品国产亚洲一区二区三区| 亚洲综合偷拍欧美一区色| 91精品国产色综合久久久蜜香臀| 日本不卡在线视频| 午夜激情综合网| 亚洲日本在线看| 中文字幕欧美日韩一区| 欧美日韩精品高清| 9人人澡人人爽人人精品| 国产成人在线影院| 久久国产精品一区二区| 奇米精品一区二区三区四区| 精品国产免费一区二区三区四区 | 亚洲bdsm女犯bdsm网站| 欧美大片在线观看一区| 欧美mv和日韩mv的网站| 欧美日韩在线播放三区| 欧美人成免费网站| 色国产精品一区在线观看| 日本vs亚洲vs韩国一区三区 | 国产精品一区免费视频| 国产一区二区三区高清播放| 国内精品视频一区二区三区八戒| 亚洲愉拍自拍另类高清精品| 麻豆极品一区二区三区| 亚洲丝袜另类动漫二区| 欧美电视剧在线看免费| 国产精品三级电影| 亚洲欧美视频在线观看| 久久av老司机精品网站导航| 成人av手机在线观看| 欧美亚洲国产bt| 久久久国际精品| 亚洲精品视频在线| 国产欧美日韩在线看| 国产欧美一区二区在线| 中文字幕视频一区| 国产综合色视频| 久久众筹精品私拍模特| 91蜜桃婷婷狠狠久久综合9色| 欧美午夜精品久久久久久孕妇| 精品久久一区二区三区| 日韩在线卡一卡二| 在线观看91精品国产麻豆| 久久蜜桃香蕉精品一区二区三区| 亚洲摸摸操操av| 色综合久久久久综合99| 欧美激情综合在线| 国产激情精品久久久第一区二区| 欧美成人猛片aaaaaaa| 日本午夜精品一区二区三区电影| 国产在线麻豆精品观看| 欧美第一区第二区| 激情欧美日韩一区二区| 日韩精品一区二区在线| 国产精品自拍一区| 国产精品美女久久久久久2018| 99精品视频在线观看| 中文字幕一区二区三区四区不卡 | 视频一区中文字幕国产| 欧美日本韩国一区二区三区视频| 午夜精品久久久久久久蜜桃app| 欧美一级xxx| bt欧美亚洲午夜电影天堂| 亚洲香蕉伊在人在线观| 国产成a人亚洲精| 亚洲色欲色欲www在线观看| 欧美美女一区二区三区| 久久视频一区二区| 91精品国产一区二区| 国产精品18久久久久| 自拍偷拍国产精品| 91视频国产资源| 韩日精品视频一区| 亚洲精品中文在线影院| 欧美tk—视频vk| 91视频在线看| 美女网站色91| 国产一区二区三区免费在线观看| 亚洲色图视频网| 色综合激情久久| 色婷婷香蕉在线一区二区| 国产在线不卡一区| 一卡二卡欧美日韩| 亚洲综合999| 欧美精品一区二区三区高清aⅴ | 91麻豆成人久久精品二区三区| 美日韩一级片在线观看| 中文字幕一区二区在线播放| 欧美一区二区视频网站| 成人免费av资源| 成人激情图片网| 91激情在线视频| 日韩三级电影网址| 国产亚洲成年网址在线观看| 欧美嫩在线观看| 久久综合av免费| 欧美午夜理伦三级在线观看| 欧美日韩激情一区二区三区| 欧美年轻男男videosbes| 国产一二精品视频| 国产精品夜夜爽| 91精品国产91综合久久蜜臀| 久久综合久久久久88| 日韩欧美卡一卡二| 中文一区二区完整视频在线观看| 国产精品乱人伦| 午夜久久久久久电影| 五月婷婷激情综合| 91亚洲精品久久久蜜桃| 制服丝袜亚洲色图| 亚洲老司机在线| gogo大胆日本视频一区| 国产欧美精品一区| 一区二区欧美在线观看| 成人av免费在线播放| 久久影院电视剧免费观看| 亚洲v精品v日韩v欧美v专区|