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

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

?? htnews.c

?? www工具包. 這是W3C官方支持的www支撐庫. 其中提供通用目的的客戶端的WebAPI: complete HTTP/1.1 (with caching, pipelining, PUT, POS
?? C
?? 第 1 頁 / 共 2 頁
字號:
	    if (HTNewsCache_before(request, NULL, 0) == HT_LOADED)		news->state = NEWS_SUCCESS;	    else		news->state = NEWS_NEED_CONNECTION;	    break;	  case NEWS_NEED_CONNECTION: 		/* Let's set up a connection */	    if (!strncasecomp(url, "news:", 5)) {		HTUserProfile * up = HTRequest_userProfile(request);		char * newshost = HTUserProfile_news(up);		StrAllocCopy(news->name, url+5);		if (newshost) {		    char *newshack = NULL;    /* Then we can use HTParse :-) */		    StrAllocCopy(newshack, "news://");		    StrAllocCat(newshack, newshost);		    status = HTHost_connect(host, net, (char *) newshack);		    host = HTNet_host(net);		    HT_FREE(newshack);		} else		    news->state = NEWS_ERROR;	    } else if (!strncasecomp(url, "nntp:", 5)) {		news->name = HTParse(url, "", PARSE_PATH);		status = HTHost_connect(host, net, url);		host = HTNet_host(net);	    } else {		HTTRACE(PROT_TRACE, "News........ Huh?");		news->state = NEWS_ERROR;            }            if (status == HT_OK) {		BOOL greeting = NO;		/* Set up the persistent connection */		if (!HTNet_persistent(net)) {		    HTNet_setPersistent(net, YES, HT_TP_SINGLE);		    greeting = YES;		}		/*		** Check the protocol class to see if we have connected to a		** the right class of server, in this case HTTP.		*/		{		    HTHost * host = HTNet_host(net);		    char * s_class = HTHost_class(host);		    if (s_class && strcasecomp(s_class, "nntp")) {			HTRequest_addError(request, ERR_FATAL, NO, HTERR_CLASS,					   NULL, 0, "HTLoadNews");			news->state = NEWS_ERROR;			break;		    }		    HTHost_setClass(host, "nntp");		}		/* 		** 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 * rstream = HTNewsStatus_new(request, news, host);		    HTNet_setReadStream(net, rstream);		    HTRequest_setOutputConnected(request, YES);		}		/*		** Create the stream pipe TO the channel from the application		** and hook it up to the request object		*/		{		    HTOutputStream * output = HTNet_getOutput(net, NULL, 0);		    HTRequest_setInputStream(request, (HTStream *) output);		}		news->state = greeting ? NEWS_NEED_GREETING : NEWS_NEED_SWITCH;	    } else if (status == HT_WOULD_BLOCK || status == HT_PENDING)		return HT_OK;	    else		news->state = NEWS_ERROR;	    break;	  case NEWS_NEED_GREETING:	    status = HTHost_read(HTNet_host(net), net);	    if (status == HT_WOULD_BLOCK)		return HT_OK;	    else if (status == HT_LOADED) {		if (news->repcode/100 == 2)		    news->state = NEWS_NEED_SWITCH;		else		    news->state = NEWS_ERROR;	    } else		news->state = NEWS_ERROR;	    break;	  case NEWS_NEED_SWITCH:	  {	      HTMethod method = HTRequest_method(request);	      /*	      ** Find out what to ask the news server. Syntax of address is	      **	xxx@yyy		Article	      **	<xxx@yyy>	Same article	      **	xxxxx		News group (no "@")	      */	      if (method == METHOD_GET) {		  if (strchr(url, '@')) {				  /* ARTICLE */		      if (*(news->name) != '<') {		  /* Add '<' and '>' */			  char *newart;			  if ((newart = (char  *) HT_MALLOC(strlen(news->name)+3)) == NULL)			      HT_OUTOFMEM("HTLoadNews");			  sprintf(newart, "<%s>", news->name);			  HT_FREE(news->name);			  news->name = newart;		      }		      news->state = NEWS_NEED_ARTICLE;		  } else if (strchr(url, '*'))		      news->state = NEWS_NEED_LIST;		  else		      news->state = NEWS_NEED_GROUP;	      } else if (method == METHOD_POST)		  news->state = NEWS_NEED_POST;	      else {		  HTRequest_addError(request, ERR_FATAL, NO,				     HTERR_NOT_IMPLEMENTED,NULL, 0,"HTLoadNews");		  news->state = NEWS_ERROR;	      }	      HTUnEscape(news->name);	      HTCleanTelnetString(news->name);	  }	  break;	  case NEWS_NEED_ARTICLE:	    if (!news->sent) {		status = SendCommand(request, news, "ARTICLE", news->name);		if (status == HT_WOULD_BLOCK)		    return HT_OK;		else if (status == HT_ERROR)		    news->state = NEWS_ERROR;		news->format = WWW_MIME;		/*		** Set the default content type to plain text as news servers		** almost never send any useful information about the length		** of the body or the type - the success of MIME!		*/		HTAnchor_setFormat(anchor, WWW_PLAINTEXT);		news->sent = YES;	    } else {		status = HTHost_read(HTNet_host(net), net);		if (status == HT_WOULD_BLOCK)		    return HT_OK;		else if (status == HT_OK)		    news->state = NEWS_NEED_BODY;		else if (status == HT_LOADED) {		    news->state = (news->repcode/100 == 2) ?			NEWS_SUCCESS : NEWS_ERROR;		} else		    news->state = NEWS_ERROR;		news->sent = NO;	    }	    break;#if HT_LISTGROUP	  case NEWS_NEED_LGRP:	    if (!news->sent) {		status = SendCommand(request, news, "LIST", "NEWSGROUPS");		if (status == HT_WOULD_BLOCK)		    return HT_OK;		else if (status == HT_ERROR)		    news->state = NEWS_ERROR; 		news->format = WWW_NNTP_LIST;		news->sent = YES;	    } else {		status = HTHost_read(HTNet_host(net), net);		if (status == HT_WOULD_BLOCK)		    return HT_OK;		else if (status == HT_OK)		    news->state = NEWS_NEED_BODY;		else if (status == HT_LOADED) {		    news->state = (news->repcode/100 == 2) ?			NEWS_SUCCESS : NEWS_NEED_LIST;		} else		    news->state = NEWS_ERROR;		news->sent = NO;	    }	    break;#endif /* HT_LISTGROUP */	  case NEWS_NEED_LIST:	    if (!news->sent) {		status = SendCommand(request, news, "LIST", NULL);		if (status == HT_WOULD_BLOCK)		    return HT_OK;		else if (status == HT_ERROR)		    news->state = NEWS_ERROR;		news->format = WWW_NNTP_LIST;		news->sent = YES;	    } else {		status = HTHost_read(HTNet_host(net), net);		if (status == HT_WOULD_BLOCK)		    return HT_OK;		else if (status == HT_OK)		    news->state = NEWS_NEED_BODY;		else if (status == HT_LOADED) {		    news->state = (news->repcode/100 == 2) ?			NEWS_SUCCESS : NEWS_ERROR;		} else		    news->state = NEWS_ERROR;		news->sent = NO;	    }	    break;	  case NEWS_NEED_GROUP:	    if (!news->sent) {		status = SendCommand(request, news, "GROUP", news->name);		if (status == HT_WOULD_BLOCK)		    return HT_OK;		else if (status == HT_ERROR)		    news->state = NEWS_ERROR;		news->sent = YES;	    } else {		status = HTHost_read(HTNet_host(net), net);		if (status == HT_WOULD_BLOCK)		    return HT_OK;		else if (status == HT_LOADED) {		    if (news->repcode/100 == 2) {			if (sscanf(news->reply, "%d%d%d", &news->total,				   &news->first, &news->last) == 3) {			    if (MaxArt && news->total>MaxArt)				news->last = news->first-MaxArt;			    news->current = news->first;			    /* If no content in this group */			    if (news->first == news->last) {				HTRequest_addError(request, ERR_FATAL, NO,						   HTERR_NO_CONTENT,						   NULL, 0, "HTLoadNews");				news->state = NEWS_NO_DATA;				break;			    }			    news->state = NEWS_NEED_XOVER;			} else			    news->state = NEWS_ERROR;		    } else			news->state = NEWS_ERROR;		} else		    news->state = NEWS_ERROR;		news->sent = NO;	    }	    break;	  case NEWS_NEED_XOVER:	    if (!news->sent) {		char buf[20];		sprintf(buf, "%d-%d", news->first, news->last);		status = SendCommand(request, news, "XOVER", buf);		if (status == HT_WOULD_BLOCK)		    return HT_OK;		else if (status == HT_ERROR)		    news->state = NEWS_ERROR;		news->format = WWW_NNTP_OVER;		news->sent = YES;	    } else {		status = HTHost_read(HTNet_host(net), net);		if (status == HT_WOULD_BLOCK)		    return HT_OK;		else if (status == HT_OK)		    news->state = NEWS_NEED_BODY;		else if (status == HT_LOADED) {		    if (news->repcode/100 == 2)			news->state = NEWS_SUCCESS;		    else {			news->format = WWW_NNTP_HEAD;			news->state = NEWS_NEED_HEAD;		    }		} else		    news->state = NEWS_ERROR;		news->sent = NO;	    }	    break;	  case NEWS_NEED_HEAD:	    if (!news->sent) {		char buf[10];		sprintf(buf, "%d", news->current++);		status = SendCommand(request, news, "HEAD", buf);		if (status == HT_WOULD_BLOCK)		    return HT_OK;		else if (status == HT_ERROR)		    news->state = NEWS_ERROR;		news->sent = YES;	    } else {		status = HTHost_read(HTNet_host(net), net);		if (status == HT_WOULD_BLOCK)		    return HT_OK;		else if (status == HT_LOADED) {		    if (news->repcode/100 == 2) {			if (news->current > news->last)			    news->state = NEWS_SUCCESS;		    } else			news->state = NEWS_ERROR;		} else		    news->state = NEWS_ERROR;		news->sent = NO;	    }	    break;	  case NEWS_NEED_POST:	  {	      HTStream * oldinput = HTRequest_inputStream(request);	      HTStream * newinput =		  HTNewsPost_new(request, HTBuffer_new(oldinput, request,512));	      HTRequest_setInputStream(request, newinput);	      	      /* Remember to convert to CRLF */	  }	  news->state = NEWS_NEED_BODY;	  break;          case NEWS_NEED_BODY:            if (type == HTEvent_WRITE || type == HTEvent_BEGIN) {		if (HTRequest_isDestination(request)) {		    HTRequest * source = HTRequest_source(request);		    HTNet * srcnet = HTRequest_net(source);		    if (srcnet) {			HTHost_register(HTNet_host(srcnet), srcnet, HTEvent_READ);			HTHost_unregister(HTNet_host(srcnet), srcnet, HTEvent_WRITE);		    }		    return HT_OK;		}		/*		**  Should we use the input stream directly or call the post		**  callback function to send data down to the network?		*/		{		    HTStream * input = HTRequest_inputStream(request);		    HTPostCallback * pcbf = HTRequest_postCallback(request);		    if (pcbf) {			status = pcbf(request, input);			if (status == HT_PAUSE || status == HT_LOADED)			    type = HTEvent_READ;		    } else {			status = (*input->isa->flush)(input);			type = HTEvent_READ;		    }		    if (status == HT_WOULD_BLOCK) return HT_OK;		}		status = request->PostCallback ?                    request->PostCallback(request, request->input_stream) :			(*request->input_stream->isa->flush)(request->input_stream); 		if (status == HT_WOULD_BLOCK)                    return HT_OK;                else 	                    type = HTEvent_READ;	  /* Trick to ensure that we do READ */	    } else if (type == HTEvent_READ) {                status = HTHost_read(HTNet_host(net), net);		if (status == HT_WOULD_BLOCK)		    return HT_OK;                else if (status == HT_LOADED)		    news->state = NEWS_SUCCESS;		else		    news->state = NEWS_ERROR;	    } else {		news->state = NEWS_ERROR;	    }	    break;			  case NEWS_SUCCESS:	    HTNewsCleanup(request, HT_LOADED);	    return HT_OK;	    break;	case NEWS_NO_DATA:	    HTNewsCleanup(request, HT_NO_DATA);	    return HT_OK;	    break;	  case NEWS_ERROR:	    HTNewsCleanup(request, HT_NOT_FOUND);	    return HT_OK;	    break;	}    } /* End of while(1) */}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品亚洲成a人| 亚洲成人免费视| 国产精品18久久久久久久网站| 欧美大度的电影原声| 精品在线免费观看| 久久影院视频免费| 不卡的电影网站| 一区二区三区欧美亚洲| 欧美色男人天堂| 蜜桃精品视频在线观看| 久久影院电视剧免费观看| 91最新地址在线播放| 亚洲国产一区二区视频| 精品欧美久久久| 成人黄色小视频| 五月开心婷婷久久| 久久精品一区二区三区av| 97久久精品人人澡人人爽| 偷拍亚洲欧洲综合| 国产亚洲精品资源在线26u| 色综合久久中文综合久久牛| 天天色天天操综合| 欧美高清在线视频| 欧美军同video69gay| 国产精品一二三在| 亚洲成人久久影院| 日本一区二区视频在线| 欧美日韩国产一级| 国产成人精品免费| 日本不卡视频在线| 亚洲色图色小说| 精品91自产拍在线观看一区| 一本色道久久综合亚洲91| 免费在线观看精品| 亚洲三级在线免费观看| 日韩美女在线视频| 欧美午夜精品电影| av成人动漫在线观看| 毛片不卡一区二区| 一级做a爱片久久| 日本一区二区三区高清不卡| 欧美日韩国产电影| 91色在线porny| 国产乱人伦偷精品视频免下载| 亚洲成人一二三| 亚洲精品免费播放| 国产精品你懂的在线欣赏| 日韩久久免费av| 欧美疯狂性受xxxxx喷水图片| 成人午夜短视频| 国产乱码精品一区二区三区av| 亚洲444eee在线观看| 国产精品初高中害羞小美女文| 日韩一卡二卡三卡国产欧美| 欧美视频在线一区二区三区| 色综合久久天天| av在线这里只有精品| 国内精品不卡在线| 久久国产精品无码网站| 日韩黄色免费电影| 亚洲国产一二三| 亚洲午夜电影网| 亚洲免费电影在线| 亚洲欧美一区二区久久| 国产清纯白嫩初高生在线观看91 | 欧美最新大片在线看 | 亚洲素人一区二区| 国产精品麻豆视频| 欧美国产精品v| 欧美经典一区二区| 久久久久综合网| 国产人久久人人人人爽| 国产欧美一区二区三区鸳鸯浴| 久久先锋影音av鲁色资源网| 精品国产欧美一区二区| 亚洲精品在线免费播放| xvideos.蜜桃一区二区| 久久久国产午夜精品| 久久久久久影视| 国产片一区二区| 1024成人网色www| 亚洲精品久久嫩草网站秘色| 亚洲国产乱码最新视频 | 国产精品日产欧美久久久久| 国产人久久人人人人爽| 国产精品久久久久9999吃药| 中文字幕一区二区视频| 一级日本不卡的影视| 丝袜a∨在线一区二区三区不卡| 日韩高清不卡在线| 激情成人综合网| 高清免费成人av| 欧美最猛黑人xxxxx猛交| 欧美一级生活片| 久久精品视频一区二区| 亚洲婷婷在线视频| 午夜精品久久久久久久| 久久精品噜噜噜成人av农村| 国产精品18久久久久久久久久久久| 菠萝蜜视频在线观看一区| 色婷婷精品久久二区二区蜜臀av | 色欧美片视频在线观看在线视频| 在线观看日韩av先锋影音电影院| 91麻豆精品91久久久久久清纯 | 91精品国产一区二区人妖| 日韩欧美另类在线| 国产精品福利一区| 亚洲1区2区3区4区| 国产成人综合亚洲网站| 日本电影欧美片| 亚洲精品一区二区三区99| 亚洲天堂av一区| 精一区二区三区| 91麻豆精品秘密| 久久久亚洲综合| 亚洲综合一区在线| 久久99国产精品久久| 91尤物视频在线观看| 欧美成人猛片aaaaaaa| 亚洲免费伊人电影| 激情综合网av| 91国模大尺度私拍在线视频| 精品国产三级电影在线观看| 亚洲精品国产成人久久av盗摄| 麻豆91精品视频| 91麻豆精品在线观看| 久久综合999| 日韩专区在线视频| 91丨九色porny丨蝌蚪| 精品国产成人系列| 亚洲午夜久久久久久久久电影院 | 国产蜜臀av在线一区二区三区| 亚洲高清一区二区三区| 不卡的av电影| 久久网站热最新地址| 午夜一区二区三区视频| 不卡av免费在线观看| 久久精品亚洲国产奇米99| 免费欧美在线视频| 欧美伊人久久久久久午夜久久久久| 国产亲近乱来精品视频| 看国产成人h片视频| 91精品国产综合久久小美女| 亚洲一二三四在线观看| 成人avav影音| 中文字幕不卡在线观看| 久草这里只有精品视频| 制服视频三区第一页精品| 亚洲国产精品影院| 色综合久久99| 亚洲视频精选在线| 99视频一区二区| 国产精品免费aⅴ片在线观看| 精品中文字幕一区二区 | 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 久久一区二区三区四区| 日韩电影免费一区| 欧美日韩国产综合草草| 亚洲国产你懂的| 欧美午夜理伦三级在线观看| 一区二区三区波多野结衣在线观看| 91在线精品一区二区三区| 国产精品伦一区| 97久久精品人人做人人爽50路| 国产精品美女www爽爽爽| 99国产精品国产精品毛片| 中文字幕日韩av资源站| 一本色道a无线码一区v| 亚洲香蕉伊在人在线观| 欧美日韩在线一区二区| 视频一区国产视频| 欧美大片在线观看一区| 精品在线你懂的| 中文av一区特黄| 91欧美一区二区| 亚洲综合男人的天堂| 欧美三级午夜理伦三级中视频| 亚洲第四色夜色| 日韩欧美国产综合| 国产精品亚洲人在线观看| 中文一区二区完整视频在线观看| 不卡一区二区在线| 亚洲色图制服诱惑| 欧美日韩美少妇| 激情五月婷婷综合| 中文字幕av在线一区二区三区| eeuss影院一区二区三区| 洋洋av久久久久久久一区| 制服丝袜亚洲精品中文字幕| 韩国精品主播一区二区在线观看| 中文字幕高清不卡| 欧美少妇一区二区| 看片网站欧美日韩| 中文字幕一区二区三区在线播放| 在线观看精品一区| 国产在线乱码一区二区三区| 国产精品国产成人国产三级| 欧美日韩精品一区二区在线播放| 加勒比av一区二区| 亚洲视频在线观看一区|