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

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

?? http.c

?? www工具包. 這是W3C官方支持的www支撐庫. 其中提供通用目的的客戶端的WebAPI: complete HTTP/1.1 (with caching, pipelining, PUT, POS
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*									 HTTP.c**	MULTITHREADED IMPLEMENTATION OF HTTP CLIENT****	(c) COPYRIGHT MIT 1995.**	Please first read the full copyright statement in the file COPYRIGH.**	@(#) $Id: HTTP.c,v 1.192 2002/05/28 18:36:25 kirschpi Exp $****	This module implements the HTTP protocol as a state machine**** History:**    < May 24 94 ??	Unknown - but obviously written**	May 24 94 HF	Made reentrent and cleaned up a bit. Implemented**			Forward, redirection, error handling and referer field**	 8 Jul 94  FM	Insulate free() from _free structure element.**	Jul 94 HFN	Written on top of HTTP.c, Henrik Frystyk**      Fev 02 MKP      WebDAV status codes, Manuele Kirsch Pinheiro**                      (Manuele.Kirsch_Pinheiro@inrialpes.fr)**      Mar 29 MKP      Correcting WebDAV's 207 Multi-Status status code, that**                      was returning HT_LOADED (200), and the right code is**                      HT_MULTI_STATUS (207).***//* Library include files */#include "wwwsys.h"#include "WWWUtil.h"#include "WWWCore.h"#include "HTHeader.h"#include "HTMIMERq.h"#include "HTReqMan.h"#include "HTNetMan.h"#include "HTTPUtil.h"#include "HTTPReq.h"#include "HTTP.h"					       /* Implements *//* Macros and other defines */#ifndef HTTP_PORT#define HTTP_PORT 80	/* Allocated to http by Jon Postel/ISI 24-Jan-92 */#endif#define PUTC(c)		(*me->target->isa->put_character)(me->target, c)#define PUTS(s)		(*me->target->isa->put_string)(me->target, s)#define PUTBLOCK(b, l)	(*me->target->isa->put_block)(me->target, b, l)#define FREE_TARGET	(*me->target->isa->_free)(me->target)#define ABORT_TARGET	(*me->target->isa->abort)(me->target, e)#ifdef HTDEBUG#include "WWWStream.h"#define HTTP_OUTPUT     "w3chttp.out"PRIVATE FILE * htfp = NULL;#endif/* Type definitions and global variables etc. local to this module *//* Final states have negative value */typedef enum _HTTPState {    HTTP_KILL_PIPE	= -4,    HTTP_RECOVER_PIPE	= -3,    HTTP_ERROR		= -2,    HTTP_OK		= -1,    HTTP_BEGIN		= 0,    HTTP_NEED_STREAM,    HTTP_CONNECTED} HTTPState;/* This is the context structure for the this module */typedef struct _http_info {    HTTPState		state;		  /* Current State of the connection */    HTTPState		next;				       /* Next state */    int			result;	     /* Result to report to the after filter */    BOOL		lock;				/* Block for writing */    HTNet *		net;    HTRequest *		request;    HTTimer *		timer;    BOOL		usedTimer;    BOOL		repetitive_writing;} http_info;#define MAX_STATUS_LEN		100   /* Max nb of chars to check StatusLine */struct _HTStream {    const HTStreamClass *	isa;    HTStream *		  	target;    HTStream *		  	info_target;	/* For 100 codes */    HTRequest *			request;    http_info *			http;    HTEOLState			state;    BOOL			transparent;    BOOL			cont;    char *			version;	     /* Should we save this? */    int				status;    char *			reason;    char 			buffer[MAX_STATUS_LEN+1];    int				buflen;    int				startLen;/* buflen when put_block was called */};struct _HTInputStream {    const HTInputStreamClass *	isa;};/* How long to wait before writing the body in PUT and POST requests */#define DEFAULT_FIRST_WRITE_DELAY	2000#define DEFAULT_SECOND_WRITE_DELAY	3000#define DEFAULT_REPEAT_WRITE		30PRIVATE ms_t HTFirstWriteDelay = DEFAULT_FIRST_WRITE_DELAY;PRIVATE ms_t HTSecondWriteDelay = DEFAULT_SECOND_WRITE_DELAY;PRIVATE ms_t HTRepeatWrite = DEFAULT_REPEAT_WRITE;#ifdef HT_NO_PIPELININGPRIVATE HTTPConnectionMode ConnectionMode = HTTP_11_NO_PIPELINING;#else#ifdef HT_MUXPRIVATE HTTPConnectionMode ConnectionMode = HTTP_11_MUX;#else#ifdef HT_FORCE_10PRIVATE HTTPConnectionMode ConnectionMode = HTTP_FORCE_10;#elsePRIVATE HTTPConnectionMode ConnectionMode = HTTP_11_PIPELINING;#endif#endif#endif/* ------------------------------------------------------------------------- *//* 			          Help Functions			     *//* ------------------------------------------------------------------------- *//*	HTTPCleanup**	-----------**      This function closes the connection and frees memory.**      Returns YES on OK, else NO*/PRIVATE int HTTPCleanup (HTRequest *req, int status){    HTNet * net = HTRequest_net(req);    http_info * http = (http_info *) HTNet_context(net);    HTStream * input = HTRequest_inputStream(req);    HTTRACE(PROT_TRACE, "HTTP Clean.. Called with status %d, net %p\n" _ status _ net);    if (status == HT_INTERRUPTED) {    	HTAlertCallback * cbf = HTAlert_find(HT_PROG_INTERRUPT);    	if (cbf) (*cbf)(req, HT_PROG_INTERRUPT,	    HT_MSG_NULL, NULL, NULL, NULL);    } else if (status == HT_TIMEOUT) {    	HTAlertCallback * cbf = HTAlert_find(HT_PROG_TIMEOUT);    	if (cbf) (*cbf)(req, HT_PROG_TIMEOUT,	    HT_MSG_NULL, NULL, NULL, NULL);    }	    /* Free stream with data TO network */    if (input) {	if (input->isa) {	    if (status==HT_INTERRUPTED || status==HT_RECOVER_PIPE || status==HT_TIMEOUT)		(*input->isa->abort)(input, NULL);	    else		(*input->isa->_free)(input);	}	HTRequest_setInputStream(req, NULL);    }    /*    **  Remove if we have registered an upload function as a callback    */    if (http && http->timer) {	HTTimer_delete(http->timer);	http->timer = NULL;	http->lock = NO;    }    /*    ** Remove the request object and our own context structure for http.    */    if (status != HT_RECOVER_PIPE) {        HTNet_delete(net, status);	HT_FREE(http);    }    return YES;}/***	Informational 1xx codes are handled separately**	Returns YES if we should continue, NO if we should stop*/PRIVATE BOOL HTTPInformation (HTStream * me){    http_info * http = me->http;    switch (me->status) {    case 100:#if 0	HTRequest_addError(me->request, ERR_INFO, NO, HTERR_CONTINUE,			   me->reason, (int) strlen(me->reason),			   "HTTPInformation");#endif	http->result = HT_CONTINUE;	return YES;	break;    case 101:	/*	**  We consider 101 Switching as a final state and exit this request	*/	HTRequest_addError(me->request, ERR_INFO, NO, HTERR_SWITCHING,			   me->reason, (int) strlen(me->reason),			   "HTTPInformation");	http->next = HTTP_OK;	http->result = HT_UPGRADE;	return YES;	break;#ifdef HT_DAV   case 102:            /* 102 Processing */        /*        ** MKP: 102 Processing indicates that the server is processing the        **      request, and a final response will be sent later. So the client        **      should wait for this final response.        ** MKP: I'm not sure that it will work. Any suggestion??        */              http->result = HT_CONTINUE;        http->next = HTTP_CONNECTED;        return YES;        break;#endif            default:	HTRequest_addError(me->request, ERR_FATAL, NO, HTERR_BAD_REPLY,		   (void *) me->buffer, me->buflen, "HTTPNextState");	http->next = HTTP_ERROR;	http->result = HT_ERROR;	break;    }    return NO;}/***	This is a big switch handling all HTTP return codes. It puts in any**	appropiate error message and decides whether we should expect data**	or not.*/PRIVATE void HTTPNextState (HTStream * me){    http_info * http = me->http;    int error_class = me->status / 100;    switch (error_class) {    case 0:							     /* 0.9 response */    case 2:	switch (me->status) {	case 201:							  /* Created */	    HTRequest_addError(me->request, ERR_INFO, NO, HTERR_CREATED,			       me->reason, (int) strlen(me->reason),			       "HTTPNextState");	    http->next = HTTP_OK;	    http->result = HT_CREATED;	    break;	case 202:							 /* Accepted */	    HTRequest_addError(me->request, ERR_INFO, NO, HTERR_ACCEPTED,			       me->reason, (int) strlen(me->reason),			       "HTTPNextState");	    http->next = HTTP_OK;	    http->result = HT_ACCEPTED;	    break;	case 203:				    /* Non-authoritative information */	    HTRequest_addError(me->request, ERR_INFO, NO, HTERR_NON_AUTHORITATIVE,			       me->reason, (int) strlen(me->reason),			       "HTTPNextState");	    http->next = HTTP_OK;	    http->result = HT_LOADED;	    break;	case 204:						      /* No Response */	    HTRequest_addError(me->request, ERR_INFO, NO, HTERR_NO_CONTENT,			       me->reason, (int) strlen(me->reason),			       "HTTPNextState");	    http->next = HTTP_OK;	    http->result = HT_NO_DATA;	    break;	case 205:						    /* Reset Content */	    HTRequest_addError(me->request, ERR_INFO, NO, HTERR_RESET,			       me->reason, (int) strlen(me->reason),			       "HTTPNextState");	    http->next = HTTP_OK;	    http->result = HT_RESET_CONTENT;	    break;	case 206:						  /* Partial Content */	    HTRequest_addError(me->request, ERR_INFO, NO, HTERR_PARTIAL,			       me->reason, (int) strlen(me->reason),			       "HTTPNextState");	    http->next = HTTP_OK;	    http->result = HT_PARTIAL_CONTENT;	    break;	case 207:						/* Partial Update OK */	    HTRequest_addError(me->request, ERR_INFO, NO, HTERR_PARTIAL_OK,			       me->reason, (int) strlen(me->reason),			       "HTTPNextState");	    http->next = HTTP_OK;#ifdef HT_DAV                                   /* WebDAV : Multistatus status code */            http->result = HT_MULTI_STATUS;#else 	    http->result = HT_PARTIAL_CONTENT;#endif	    break;	default:	    HTRequest_addError(me->request, ERR_INFO, NO, HTERR_OK,			       me->reason, (int) strlen(me->reason),			       "HTTPNextState");	    http->next = HTTP_OK;	    http->result = HT_LOADED;	    break;	}	break;    case 3:	switch (me->status) {	case 301:						   	    /* Moved */	    HTRequest_addError(me->request, ERR_INFO, NO, HTERR_MOVED,			       me->reason, (int) strlen(me->reason),			       "HTTPNextState");	    http->next = HTTP_ERROR;	    http->result = HT_PERM_REDIRECT;	    break;	case 302:							    /* Found */	    HTRequest_addError(me->request, ERR_INFO, NO, HTERR_FOUND,			       me->reason, (int) strlen(me->reason),			       "HTTPNextState");	    http->next = HTTP_ERROR;	    http->result = HT_FOUND;	    break;		case 303:							   /* Method */	    HTRequest_addError(me->request, ERR_FATAL, NO, HTERR_METHOD,			       me->reason, (int) strlen(me->reason),			       "HTTPNextState");	    http->next = HTTP_ERROR;	    http->result = HT_SEE_OTHER;	    break;	case 304:						     /* Not Modified */	    HTRequest_addError(me->request, ERR_INFO, NO, HTERR_NOT_MODIFIED,			       me->reason, (int) strlen(me->reason),			       "HTTPNextState");	    http->next = HTTP_OK;	    http->result = HT_NOT_MODIFIED;	    break;		case 305:						        /* Use proxy */	    HTRequest_addError(me->request, ERR_INFO, NO, HTERR_USE_PROXY,			       me->reason, (int) strlen(me->reason),			       "HTTPNextState");	    http->next = HTTP_ERROR;	    http->result = HT_USE_PROXY;	    break;	#if 0	case 306:						        /* Use proxy */	    HTRequest_addError(me->request, ERR_INFO, NO, HTERR_PROXY_REDIRECT,			       me->reason, (int) strlen(me->reason),			       "HTTPNextState");	    http->next = HTTP_ERROR;	    http->result = HT_USE_PROXY;	    break;#endif	case 307:						        /* Use proxy */	    HTRequest_addError(me->request, ERR_INFO, NO, HTERR_TEMP_REDIRECT,			       me->reason, (int) strlen(me->reason),			       "HTTPNextState");	    http->next = HTTP_ERROR;	    http->result = HT_TEMP_REDIRECT;	    break;	default:	    HTRequest_addError(me->request, ERR_INFO, NO, HTERR_MULTIPLE,			       me->reason, (int) strlen(me->reason),			       "HTTPNextState");	    http->next = HTTP_OK;	    http->result = HT_LOADED;	    break;	}		break;    case 4:	switch (me->status) {	case 401:	    HTRequest_addError(me->request, ERR_FATAL, NO, HTERR_UNAUTHORIZED,			       me->reason, (int) strlen(me->reason), "HTTPNextState");	    http->next = HTTP_ERROR;	    http->result = HT_NO_ACCESS;	    break;		case 402:						 /* Payment required */	    HTRequest_addError(me->request, ERR_FATAL, NO, HTERR_PAYMENT_REQUIRED,			       me->reason, (int) strlen(me->reason), "HTTPNextState");	    http->next = HTTP_ERROR;	    http->result = -402;	    break;		case 403:							/* Forbidden */	    HTRequest_addError(me->request, ERR_FATAL, NO, HTERR_FORBIDDEN,			       me->reason, (int) strlen(me->reason), "HTTPNextState");	    http->next = HTTP_ERROR;	    http->result = HT_FORBIDDEN;	    break;		case 404:							/* Not Found */	    HTRequest_addError(me->request, ERR_FATAL, NO, HTERR_NOT_FOUND,			       me->reason, (int) strlen(me->reason), "HTTPNextState");	    http->next = HTTP_ERROR;	    http->result = -404;	    break;		case 405:						      /* Not Allowed */	    HTRequest_addError(me->request, ERR_FATAL, NO, HTERR_NOT_ALLOWED,			       me->reason, (int) strlen(me->reason), "HTTPNextState");	    http->next = HTTP_ERROR;	    http->result = -405;	    break;	case 406:						  /* None Acceptable */	    HTRequest_addError(me->request, ERR_FATAL, NO, HTERR_NONE_ACCEPTABLE,			       me->reason, (int) strlen(me->reason), "HTTPNextState");	    http->next = HTTP_ERROR;	    http->result = HT_NOT_ACCEPTABLE;	    break;	case 407:			       	    /* Proxy Authentication Required */	    HTRequest_addError(me->request, ERR_FATAL, NO,HTERR_PROXY_UNAUTHORIZED,			       me->reason, (int) strlen(me->reason), "HTTPNextState");	    http->next = HTTP_ERROR;	    http->result = HT_NO_PROXY_ACCESS;	    break;	case 408:						  /* Request Timeout */	    HTRequest_addError(me->request, ERR_FATAL, NO, HTERR_TIMEOUT,			       me->reason, (int) strlen(me->reason), "HTTPNextState");	    http->next = HTTP_ERROR;	    http->result = -408;	    break;	case 409:						  	 /* Conflict */	    HTRequest_addError(me->request, ERR_FATAL, NO, HTERR_CONFLICT,			       me->reason, (int) strlen(me->reason), "HTTPNextState");	    http->next = HTTP_ERROR;	    http->result = HT_CONFLICT;	    break;	case 410:						  	     /* Gone */	    HTRequest_addError(me->request, ERR_FATAL, NO, HTERR_GONE,			       me->reason, (int) strlen(me->reason), "HTTPNextState");	    http->next = HTTP_ERROR;	    http->result = -410;	    break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区三区在线看| 免费久久精品视频| 精品成人在线观看| 95精品视频在线| 黑人巨大精品欧美一区| 一区二区成人在线观看| 日本一区二区三区在线不卡 | 成人在线视频首页| 日韩精品电影在线| 亚洲一线二线三线视频| 亚洲国产高清在线观看视频| 在线不卡免费欧美| 在线观看网站黄不卡| 成人国产电影网| 国产专区综合网| 日本麻豆一区二区三区视频| 亚洲精品日产精品乱码不卡| 中文字幕乱码日本亚洲一区二区 | 国产乱人伦精品一区二区在线观看| 一区二区三区精品在线| 国产精品视频你懂的| 久久日韩粉嫩一区二区三区| 日韩欧美高清dvd碟片| 欧美一区二区三区性视频| 欧美日韩中文精品| 欧美中文字幕久久| 色94色欧美sute亚洲线路一久| 国产激情视频一区二区在线观看| 久久99深爱久久99精品| 蜜臀久久99精品久久久画质超高清 | 欧美少妇一区二区| 91麻豆免费看片| 99国产麻豆精品| 91美女片黄在线| 91黄色免费看| 在线观看免费成人| 欧洲精品中文字幕| 欧美日韩一区在线观看| 色香蕉久久蜜桃| 欧洲精品一区二区三区在线观看| 一本色道久久加勒比精品 | 欧美二区在线观看| 欧美日韩激情一区二区三区| 在线观看成人小视频| 91久久精品午夜一区二区| 91国产成人在线| 欧美日韩国产成人在线免费| 制服丝袜日韩国产| 精品久久免费看| 国产视频一区不卡| 国产精品盗摄一区二区三区| 亚洲天堂精品在线观看| 亚洲精选视频在线| 午夜精品在线视频一区| 日韩av网站免费在线| 国内精品在线播放| 99精品欧美一区二区三区小说 | 久久视频一区二区| 国产午夜精品一区二区三区视频| 国产精品狼人久久影院观看方式| 国产精品入口麻豆九色| 亚洲欧美日韩成人高清在线一区| 亚洲最新在线观看| 久久成人综合网| 国产sm精品调教视频网站| 99精品热视频| 欧美一区二区在线观看| 国产欧美日本一区视频| 一级日本不卡的影视| 蜜臀精品久久久久久蜜臀| 成人免费视频一区二区| 日本福利一区二区| 精品国免费一区二区三区| 国产精品久久久久永久免费观看 | 99久久99久久久精品齐齐| 欧美日韩免费不卡视频一区二区三区| 精品欧美乱码久久久久久| 国产精品白丝在线| 婷婷成人综合网| 丰满白嫩尤物一区二区| 欧美在线观看视频一区二区 | 日韩欧美亚洲国产另类| 国产精品国产三级国产普通话蜜臀| 亚洲丰满少妇videoshd| 国产成人日日夜夜| 91电影在线观看| 国产欧美一区二区精品性色| 亚洲一区二区三区爽爽爽爽爽| 欧美性色黄大片手机版| 精品久久久久av影院| 亚洲人成亚洲人成在线观看图片| 免费成人美女在线观看.| 91在线看国产| 国产日韩在线不卡| 日韩av中文在线观看| 91在线视频观看| 久久精品夜夜夜夜久久| 日韩av中文字幕一区二区三区| 91小宝寻花一区二区三区| 久久综合九色综合欧美亚洲| 亚洲国产aⅴ成人精品无吗| 国产成人免费av在线| 日韩亚洲欧美高清| 一区二区三区**美女毛片| 粉嫩13p一区二区三区| 国产精品自在欧美一区| 欧美日韩精品三区| 26uuu国产一区二区三区| 亚洲成人激情综合网| 国产黄色91视频| 欧美日韩精品一区视频| 亚洲丝袜另类动漫二区| 国产精品99精品久久免费| 欧美一区二区三区日韩视频| 亚洲视频免费观看| 国产成人精品免费网站| 欧美高清性hdvideosex| 亚洲一区二区av电影| voyeur盗摄精品| 国产精品免费久久| 国产ts人妖一区二区| 久久久亚洲精华液精华液精华液| 久久99精品久久久久久国产越南 | 91精品欧美综合在线观看最新| 亚洲另类春色国产| a4yy欧美一区二区三区| 国产精品毛片a∨一区二区三区| 国产精品白丝jk白祙喷水网站 | 亚洲福利国产精品| 色偷偷久久人人79超碰人人澡| 国产精品久久久久久亚洲伦 | 国产一区二区三区四区五区入口 | 亚洲一区二区三区在线| 91欧美一区二区| 亚洲欧美日韩国产综合在线| 成人黄色大片在线观看| 国产精品丝袜在线| 99久久99久久综合| 亚洲免费色视频| 欧洲av在线精品| 亚洲国产精品一区二区尤物区| 欧美性一二三区| 日本成人在线网站| 精品欧美乱码久久久久久| 国产精品综合二区| 中文字幕不卡一区| 91啪亚洲精品| 亚洲va中文字幕| 日韩一级片网站| 粉嫩aⅴ一区二区三区四区| 最新中文字幕一区二区三区| 成人爱爱电影网址| 亚洲成a人片在线不卡一二三区| 91精品国产综合久久福利| 欧美aⅴ一区二区三区视频| 欧美一级夜夜爽| 国产精品456| 亚洲天堂久久久久久久| 欧美日韩不卡视频| 国产一区二区视频在线播放| 国产精品麻豆一区二区| 欧美图区在线视频| 狠狠色丁香九九婷婷综合五月| 国产清纯美女被跳蛋高潮一区二区久久w | 亚洲成在人线在线播放| 日韩一区二区免费高清| 日韩欧美的一区二区| 成人国产精品免费| 午夜亚洲国产au精品一区二区| 精品乱码亚洲一区二区不卡| 成人一区二区视频| 亚洲国产成人av| 久久精品免视看| 在线观看不卡一区| 国产呦萝稀缺另类资源| 亚洲精品欧美综合四区| 精品区一区二区| 在线观看一区二区视频| 国产一区二区三区国产| 一区二区高清视频在线观看| 久久久久久电影| 欧美日本在线一区| 成人app网站| 激情综合网激情| 亚洲一二三区在线观看| 久久九九久精品国产免费直播| 欧洲激情一区二区| 国产99久久久国产精品潘金| 亚洲mv大片欧洲mv大片精品| 国产性色一区二区| 欧美日韩国产高清一区二区三区| 成人一级片网址| 九九九精品视频| 亚洲一区自拍偷拍| 中文字幕精品在线不卡| 欧美成人免费网站| 9191成人精品久久| 在线国产亚洲欧美| 91免费看片在线观看| 国产福利一区二区三区|