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

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

?? buffer.c

?? OpenSSL 0.9.8k 最新版OpenSSL
?? C
字號:
#include "tunala.h"#ifndef NO_BUFFERvoid buffer_init(buffer_t *buf){	buf->used = 0;	buf->total_in = buf->total_out = 0;}void buffer_close(buffer_t *buf){	/* Our data is static - nothing needs "release", just reset it */	buf->used = 0;}/* Code these simple ones in compact form */unsigned int buffer_used(buffer_t *buf) {	return buf->used; }unsigned int buffer_unused(buffer_t *buf) {	return (MAX_DATA_SIZE - buf->used); }int buffer_full(buffer_t *buf) {	return (buf->used == MAX_DATA_SIZE ? 1 : 0); }int buffer_notfull(buffer_t *buf) {	return (buf->used < MAX_DATA_SIZE ? 1 : 0); }int buffer_empty(buffer_t *buf) {	return (buf->used == 0 ? 1 : 0); }int buffer_notempty(buffer_t *buf) {	return (buf->used > 0 ? 1 : 0); }unsigned long buffer_total_in(buffer_t *buf) {	return buf->total_in; }unsigned long buffer_total_out(buffer_t *buf) {	return buf->total_out; }/* These 3 static (internal) functions don't adjust the "total" variables as * it's not sure when they're called how it should be interpreted. Only the * higher-level "buffer_[to|from]_[fd|SSL|BIO]" functions should alter these * values. */#if 0 /* To avoid "unused" warnings */static unsigned int buffer_adddata(buffer_t *buf, const unsigned char *ptr,		unsigned int size){	unsigned int added = MAX_DATA_SIZE - buf->used;	if(added > size)		added = size;	if(added == 0)		return 0;	memcpy(buf->data + buf->used, ptr, added);	buf->used += added;	buf->total_in += added;	return added;}static unsigned int buffer_tobuffer(buffer_t *to, buffer_t *from, int cap){	unsigned int moved, tomove = from->used;	if((int)tomove > cap)		tomove = cap;	if(tomove == 0)		return 0;	moved = buffer_adddata(to, from->data, tomove);	if(moved == 0)		return 0;	buffer_takedata(from, NULL, moved);	return moved;}#endifstatic unsigned int buffer_takedata(buffer_t *buf, unsigned char *ptr,		unsigned int size){	unsigned int taken = buf->used;	if(taken > size)		taken = size;	if(taken == 0)		return 0;	if(ptr)		memcpy(ptr, buf->data, taken);	buf->used -= taken;	/* Do we have to scroll? */	if(buf->used > 0)		memmove(buf->data, buf->data + taken, buf->used);	return taken;}#ifndef NO_IPint buffer_from_fd(buffer_t *buf, int fd){	int toread = buffer_unused(buf);	if(toread == 0)		/* Shouldn't be called in this case! */		abort();	toread = read(fd, buf->data + buf->used, toread);	if(toread > 0) {		buf->used += toread;		buf->total_in += toread;	}	return toread;}int buffer_to_fd(buffer_t *buf, int fd){	int towrite = buffer_used(buf);	if(towrite == 0)		/* Shouldn't be called in this case! */		abort();	towrite = write(fd, buf->data, towrite);	if(towrite > 0) {		buffer_takedata(buf, NULL, towrite);		buf->total_out += towrite;	}	return towrite;}#endif /* !defined(NO_IP) */#ifndef NO_OPENSSLstatic void int_ssl_check(SSL *s, int ret){	int e = SSL_get_error(s, ret);	switch(e) {		/* These seem to be harmless and already "dealt with" by our		 * non-blocking environment. NB: "ZERO_RETURN" is the clean		 * "error" indicating a successfully closed SSL tunnel. We let		 * this happen because our IO loop should not appear to have		 * broken on this condition - and outside the IO loop, the		 * "shutdown" state is checked. */	case SSL_ERROR_NONE:	case SSL_ERROR_WANT_READ:	case SSL_ERROR_WANT_WRITE:	case SSL_ERROR_WANT_X509_LOOKUP:	case SSL_ERROR_ZERO_RETURN:		return;		/* These seem to be indications of a genuine error that should		 * result in the SSL tunnel being regarded as "dead". */	case SSL_ERROR_SYSCALL:	case SSL_ERROR_SSL:		SSL_set_app_data(s, (char *)1);		return;	default:		break;	}	/* For any other errors that (a) exist, and (b) crop up - we need to	 * interpret what to do with them - so "politely inform" the caller that	 * the code needs updating here. */	abort();}void buffer_from_SSL(buffer_t *buf, SSL *ssl){	int ret;	if(!ssl || buffer_full(buf))		return;	ret = SSL_read(ssl, buf->data + buf->used, buffer_unused(buf));	if(ret > 0) {		buf->used += ret;		buf->total_in += ret;	}	if(ret < 0)		int_ssl_check(ssl, ret);}void buffer_to_SSL(buffer_t *buf, SSL *ssl){	int ret;	if(!ssl || buffer_empty(buf))		return;	ret = SSL_write(ssl, buf->data, buf->used);	if(ret > 0) {		buffer_takedata(buf, NULL, ret);		buf->total_out += ret;	}	if(ret < 0)		int_ssl_check(ssl, ret);}void buffer_from_BIO(buffer_t *buf, BIO *bio){	int ret;	if(!bio || buffer_full(buf))		return;	ret = BIO_read(bio, buf->data + buf->used, buffer_unused(buf));	if(ret > 0) {		buf->used += ret;		buf->total_in += ret;	}}void buffer_to_BIO(buffer_t *buf, BIO *bio){	int ret;	if(!bio || buffer_empty(buf))		return;	ret = BIO_write(bio, buf->data, buf->used);	if(ret > 0) {		buffer_takedata(buf, NULL, ret);		buf->total_out += ret;	}}#endif /* !defined(NO_OPENSSL) */#endif /* !defined(NO_BUFFER) */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲激情五月婷婷| 国产美女在线观看一区| 激情六月婷婷久久| 91麻豆国产福利在线观看| 日韩视频一区二区三区| 亚洲精品视频在线观看网站| 国内精品国产成人国产三级粉色| 在线观看亚洲精品| 亚洲国产精品成人综合色在线婷婷 | 欧美精品18+| 一区在线播放视频| 九色综合国产一区二区三区| 欧美三级电影在线看| 亚洲视频在线观看三级| 国产精品一二三| 欧美成人艳星乳罩| 香蕉影视欧美成人| 在线观看日韩高清av| 国产精品久久久久久久久快鸭| 国内精品久久久久影院一蜜桃| 欧美日韩成人综合| 亚洲自拍偷拍综合| 色婷婷狠狠综合| 国产精品久久久久久久浪潮网站| 极品少妇一区二区三区精品视频 | 亚洲综合在线第一页| 成人午夜碰碰视频| 久久精品一区二区三区不卡 | 亚洲成a人片综合在线| 色婷婷亚洲精品| 中文字幕一区免费在线观看| 国产成人自拍网| 久久婷婷久久一区二区三区| 精品一区二区三区免费毛片爱| 欧美一区二区三区婷婷月色| 免费成人av资源网| 26uuu色噜噜精品一区| 久久97超碰色| 国产午夜亚洲精品午夜鲁丝片| 国产美女精品在线| 国产精品乱码人人做人人爱| yourporn久久国产精品| 亚洲天堂av一区| 在线一区二区三区四区五区| 婷婷开心久久网| 日韩免费电影网站| 国产成人精品免费一区二区| |精品福利一区二区三区| 91麻豆国产在线观看| 亚洲国产aⅴ成人精品无吗| 在线观看不卡视频| 日本欧美在线观看| 国产丝袜欧美中文另类| 99久精品国产| 午夜精品在线看| 日韩一区二区三区观看| 国产一二精品视频| 亚洲精品ww久久久久久p站| 欧美电影一区二区三区| 激情综合网av| 亚洲男同1069视频| 欧美精品777| 成人综合在线视频| 亚洲午夜久久久久久久久久久| 4438x成人网最大色成网站| 国内精品久久久久影院色| 国产精品入口麻豆九色| 欧美日韩在线播放一区| 国产一区二区三区av电影| 亚洲欧美另类久久久精品| 91麻豆精品国产91久久久使用方法 | 亚洲大片精品永久免费| 精品第一国产综合精品aⅴ| 97se亚洲国产综合自在线观| 视频一区视频二区在线观看| 久久久精品人体av艺术| 在线观看网站黄不卡| 精品一区二区国语对白| 亚洲欧美日韩电影| 久久亚洲一级片| 欧美无砖专区一中文字| 国产乱码精品一品二品| 午夜欧美在线一二页| 亚洲国产精品激情在线观看| 日韩一本二本av| 91精品福利视频| 成人精品视频一区二区三区| 裸体健美xxxx欧美裸体表演| 亚洲蜜臀av乱码久久精品| 国产亚洲精品久| 欧美大片在线观看一区| 欧美日韩亚洲综合一区二区三区| 成人免费观看男女羞羞视频| 麻豆国产一区二区| 午夜欧美视频在线观看| 日韩一区中文字幕| 国产欧美日韩综合| 亚洲精品一区二区精华| 日韩免费高清电影| 制服丝袜av成人在线看| 欧美最猛黑人xxxxx猛交| 99久久免费国产| 成人小视频在线| 国产乱码精品一区二区三区忘忧草| 日韩激情一区二区| 亚洲国产精品久久久久婷婷884| 国产精品白丝在线| 欧美国产综合一区二区| 久久久久久电影| 久久精品人人做人人爽97| 精品国产乱码久久久久久老虎| 欧美日韩色综合| 91激情五月电影| 欧美中文字幕一二三区视频| 91激情在线视频| 欧洲av在线精品| 欧美日韩视频一区二区| 在线播放日韩导航| 91麻豆精品国产91久久久资源速度 | 久久精品人人爽人人爽| 欧美精品一区男女天堂| 亚洲精品一区二区三区香蕉| 欧美成人精品1314www| 日韩欧美一级二级| 精品久久久久久无| 久久久国际精品| 国产精品免费免费| 国产精品久久99| 亚洲人成精品久久久久久| 亚洲乱码日产精品bd| 一区二区三区四区视频精品免费 | 久久国产精品第一页| 狠狠狠色丁香婷婷综合久久五月| 国产一区二区视频在线| 成人免费看视频| 欧美在线你懂的| 91精品国产综合久久久蜜臀粉嫩 | 欧美日韩aaaaa| 欧美一区二区三区在线观看 | 国产精品一区不卡| 成人午夜大片免费观看| 91美女视频网站| 欧美一区永久视频免费观看| 久久毛片高清国产| 亚洲欧美偷拍卡通变态| 视频在线观看一区二区三区| 精品一区二区三区影院在线午夜 | 国产精品私人影院| 一区二区三区四区精品在线视频| 午夜精品久久久久久久99樱桃| 久久成人羞羞网站| 99精品偷自拍| 欧美一级片免费看| 国产精品你懂的在线欣赏| 亚洲国产精品自拍| 国产精品88888| 欧美美女黄视频| 国产精品美女久久久久久| 亚洲一区二区视频在线观看| 激情成人综合网| 欧美午夜电影在线播放| 国产日韩v精品一区二区| 亚洲国产精品精华液网站| 国产在线精品一区二区夜色| 欧美又粗又大又爽| 中文字幕 久热精品 视频在线 | 成人免费在线视频| 麻豆精品久久精品色综合| 色猫猫国产区一区二在线视频| 欧美va在线播放| 亚洲v精品v日韩v欧美v专区| 成人一区二区视频| 精品欧美一区二区三区精品久久 | 亚洲人精品午夜| 国产一区二区福利视频| 欧美一区二区三区系列电影| 一区二区在线看| eeuss国产一区二区三区| 久久一区二区三区国产精品| 天天色图综合网| 91国偷自产一区二区使用方法| 欧美国产一区二区| 九九国产精品视频| 91精品婷婷国产综合久久竹菊| 亚洲靠逼com| 9人人澡人人爽人人精品| 日本一区二区视频在线| 国产在线播精品第三| 3d成人动漫网站| 丝袜a∨在线一区二区三区不卡| 91免费观看视频在线| 国产精品国产自产拍高清av王其| 国产精品99久久久久久似苏梦涵 | 欧美日韩一区小说| 亚洲一区二区黄色| 在线视频观看一区| 亚洲综合一区二区三区| 在线观看网站黄不卡| 亚洲一区二区三区中文字幕 | 亚洲综合另类小说|