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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? task.c

?? 一個(gè)很有名的瀏覽器
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/* Sessions task management *//* $Id: task.c,v 1.146.2.7 2005/05/01 21:32:11 jonas Exp $ */#ifdef HAVE_CONFIG_H#include "config.h"#endif#include <stdio.h>#include <stdlib.h>#include <string.h>#include "elinks.h"#include "bfu/menu.h"#include "bfu/dialog.h"#include "cache/cache.h"#include "dialogs/status.h"#include "document/document.h"#include "document/html/parser.h"#include "document/refresh.h"#include "document/view.h"#include "intl/gettext/libintl.h"#include "lowlevel/select.h"#include "protocol/protocol.h"#include "protocol/uri.h"#include "terminal/terminal.h"#include "terminal/window.h"#include "sched/download.h"#include "sched/event.h"#include "sched/session.h"#include "sched/task.h"#include "viewer/text/view.h"static voidfree_task(struct session *ses){	assertm(ses->task.type, "Session has no task");	if_assert_failed return;	if (ses->loading_uri) {		done_uri(ses->loading_uri);		ses->loading_uri = NULL;	}	ses->task.type = TASK_NONE;}voidabort_preloading(struct session *ses, int interrupt){	if (!ses->task.type) return;	change_connection(&ses->loading, NULL, PRI_CANCEL, interrupt);	free_task(ses);}struct task {	struct session *ses;	struct uri *uri;	enum cache_mode cache_mode;	enum task_type type;	unsigned char *target_frame;	struct location *target_location;};static voidpost_yes(struct task *task){	struct session *ses = task->ses;	abort_preloading(task->ses, 0);	ses->loading.callback = (void (*)(struct download *, void *)) loading_callback;	ses->loading.data = task->ses;	ses->loading_uri = task->uri; /* XXX: Make the session inherit the URI. */	ses->task.type = task->type;	ses->task.target_frame = task->target_frame;	ses->task.target_location = task->target_location;	load_uri(ses->loading_uri, ses->referrer, &ses->loading,		 PRI_MAIN, task->cache_mode, -1);}static voidpost_no(struct task *task){	reload(task->ses, CACHE_MODE_NORMAL);	done_uri(task->uri);}/* Check if the URI is obfuscated (bug 382). The problem is said to occur when * a URI designed to pass access a specific location with a supplied username, * contains misleading chars prior to the @ symbol. * * An attacker can exploit this issue by supplying a malicious URI pointing to * a page designed to mimic that of a trusted site, and tricking a victim who * follows a link into believing they are actually at the trusted location. * * Only the user ID (and not also the password) is checked because only the * user ID is displayed in the status bar. */static intcheck_malicious_uri(struct uri *uri){	unsigned char *user, *pos;	int warn = 0;	assert(uri->user && uri->userlen);	user = pos = memacpy(uri->user, uri->userlen);	if (!user) return 0;	decode_uri_for_display(user);	while (*pos) {		int length, trailing_dots;		for (length = 0; pos[length] != '\0'; length++)			if (!(isalnum(pos[length]) || pos[length] == '.'))				break;		/* Wind back so that the TLD part is checked correctly. */		for (trailing_dots = 0; trailing_dots < length; trailing_dots++)			if (!length || pos[length - trailing_dots - 1] != '.')				break;		/* Not perfect, but I am clueless as how to do better. Besides		 * I don't really think it is an issue for ELinks. --jonas */		if (end_with_known_tld(pos, length - trailing_dots) != -1) {			warn = 1;			break;		}		pos += length;		while (*pos && (!isalnum(*pos) || *pos == '.'))			pos++;	}	mem_free(user);	return warn;}voidses_goto(struct session *ses, struct uri *uri, unsigned char *target_frame,	 struct location *target_location, enum cache_mode cache_mode,	 enum task_type task_type, int redir){	struct task *task = NULL;	int referrer_incomplete = 0;	int malicious_uri = 0;	int confirm_submit = uri->form;	unsigned char *m1 = NULL, *message = NULL;	if (ses->doc_view	    && ses->doc_view->document	    && ses->doc_view->document->refresh) {		kill_document_refresh(ses->doc_view->document->refresh);	}	assertm(!ses->loading_uri, "Buggy URI reference counting");	/* Reset the redirect counter if this is not a redirect. */	if (!redir) {		ses->redirect_cnt = 0;	}	/* Figure out whether to confirm submit or not */	/* Only confirm submit if we are posting form data or a misleading URI	 * was detected. */	/* Note uri->post might be empty here but we are still supposely	 * posting form data so this should be more correct. */	if (uri->user && uri->userlen	    && get_opt_bool("document.browse.links.warn_malicious")	    && check_malicious_uri(uri)) {		malicious_uri = 1;		confirm_submit = 1;	} else if (!uri->form) {		confirm_submit = 0;	} else {		struct cache_entry *cached;		/* First check if the referring URI was incomplete. It		 * indicates that the posted form data might be incomplete too.		 * See bug 460. */		if (ses->referrer) {			cached = find_in_cache(ses->referrer);			referrer_incomplete = (cached && cached->incomplete);		}		if (!get_opt_bool("document.browse.forms.confirm_submit")		    && !referrer_incomplete) {			confirm_submit = 0;		} else if (get_validated_cache_entry(uri, cache_mode)) {			confirm_submit = 0;		}	}	if (!confirm_submit) {		ses->loading.callback = (void (*)(struct download *, void *)) loading_callback;		ses->loading.data = ses;		ses->loading_uri = get_uri_reference(uri);		ses->task.type = task_type;		ses->task.target_frame = target_frame;		ses->task.target_location = target_location;		load_uri(ses->loading_uri, ses->referrer, &ses->loading,			 PRI_MAIN, cache_mode, -1);		return;	}	task = mem_alloc(sizeof(*task));	if (!task) return;	task->ses = ses;	task->uri = get_uri_reference(uri);	task->cache_mode = cache_mode;	task->type = task_type;	task->target_frame = target_frame;	task->target_location = target_location;	if (malicious_uri) {		unsigned char *host = memacpy(uri->host, uri->hostlen);		unsigned char *user = memacpy(uri->user, uri->userlen);		unsigned char *uristring = get_uri_string(uri, URI_PUBLIC);		message = msg_text(ses->tab->term,			N_("The URL you are about to follow might be maliciously "			"crafted in order to confuse you. By following the URL "			"you will be connecting to host \"%s\" as user \"%s\".\n\n"			"Do you want to go to URL %s?"), host, user, uristring);		mem_free_if(host);		mem_free_if(user);		mem_free_if(uristring);	} else if (redir) {		m1 = N_("Do you want to follow the redirect and post form data "			"to URL %s?");	} else if (referrer_incomplete) {		m1 = N_("The form data you are about to post might be incomplete.\n"			"Do you want to post to URL %s?");	} else if (task_type == TASK_FORWARD) {		m1 = N_("Do you want to post form data to URL %s?");	} else {		m1 = N_("Do you want to repost form data to URL %s?");	}	if (!message && m1) {		unsigned char *uristring = get_uri_string(uri, URI_PUBLIC);		message = msg_text(ses->tab->term, m1, uristring);		mem_free_if(uristring);	}	msg_box(ses->tab->term, getml(task, NULL), MSGBOX_FREE_TEXT,		N_("Warning"), ALIGN_CENTER,		message,		task, 2,		N_("~Yes"), post_yes, B_ENTER,		N_("~No"), post_no, B_ESC);}/* If @loaded_in_frame is set, this was called just to indicate a move inside a * frameset, and we basically just reset the appropriate frame's view_state in * that case. When clicking on a link inside a frame, the frame URI is somehow * updated and added to the files-to-load queue, then ses_forward() is called * with @loaded_in_frame unset, duplicating the whole frameset's location, then * later the file-to-load callback calls it for the particular frame with * @loaded_in_frame set. */struct view_state *ses_forward(struct session *ses, int loaded_in_frame){	struct location *loc = NULL;	struct view_state *vs;	if (!loaded_in_frame) {		free_files(ses);		mem_free_set(&ses->search_word, NULL);	}x:	if (!loaded_in_frame) {		loc = mem_calloc(1, sizeof(*loc));		if (!loc) return NULL;		copy_struct(&loc->download, &ses->loading);	}	if (ses->task.target_frame && *ses->task.target_frame) {		struct frame *frame;		assertm(have_location(ses), "no location yet");		if_assert_failed return NULL;		if (!loaded_in_frame) {			copy_location(loc, cur_loc(ses));			add_to_history(&ses->history, loc);		}		frame = ses_find_frame(ses, ses->task.target_frame);		if (!frame) {			if (!loaded_in_frame) {				del_from_history(&ses->history, loc);				destroy_location(loc);			}			ses->task.target_frame = NULL;			goto x;		}		vs = &frame->vs;		if (!loaded_in_frame) {			destroy_vs(vs, 1);			init_vs(vs, ses->loading_uri, vs->plain);		} else {			done_uri(vs->uri);			vs->uri = get_uri_reference(ses->loading_uri);			if (vs->doc_view) {				/* vs->doc_view itself will get detached in				 * render_document_frames(), but that's too				 * late for us. */				vs->doc_view->vs = NULL;				vs->doc_view = NULL;			}#ifdef CONFIG_ECMASCRIPT			vs->ecmascript_fragile = 1;#endif		}	} else {		assert(loc);		if_assert_failed return NULL;		init_list(loc->frames);		vs = &loc->vs;		init_vs(vs, ses->loading_uri, vs->plain);		add_to_history(&ses->history, loc);	}	ses->status.visited = 0;	/* This is another "branch" in the browsing, so throw away the current	 * unhistory, we are venturing in another direction! */	if (ses->task.type == TASK_FORWARD)		clean_unhistory(&ses->history);	return vs;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品1区2区| a在线播放不卡| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 在线国产电影不卡| 国产高清在线精品| 免费成人av资源网| 亚洲精品日韩专区silk| 久久久久久久久99精品| 制服丝袜日韩国产| 色综合久久综合网97色综合 | 91精品黄色片免费大全| 成人免费毛片嘿嘿连载视频| 蜜乳av一区二区| 亚洲影视在线观看| 国产精品进线69影院| 2023国产一二三区日本精品2022| 欧美在线你懂的| 91女人视频在线观看| 粉嫩在线一区二区三区视频| 韩日精品视频一区| 日本欧美大码aⅴ在线播放| 亚洲综合免费观看高清完整版 | 一区二区国产视频| 亚洲视频免费观看| 国产精品高潮久久久久无| 久久久天堂av| 精品动漫一区二区三区在线观看| 51精品视频一区二区三区| 欧美性极品少妇| 在线观看国产精品网站| 91福利精品视频| 日本韩国欧美在线| 日本高清不卡在线观看| 91成人在线精品| 在线视频中文字幕一区二区| 一本大道久久a久久综合婷婷| 成人18视频在线播放| 成人一级片网址| 播五月开心婷婷综合| 成人av午夜电影| 97精品电影院| 在线视频中文字幕一区二区| 欧美在线影院一区二区| 久久女同互慰一区二区三区| 日韩一区二区精品葵司在线| 这里只有精品电影| 日韩午夜在线影院| 久久亚洲一级片| 国产欧美精品一区二区色综合| 欧美国产精品中文字幕| 亚洲日穴在线视频| 亚洲成av人影院在线观看网| 日韩av高清在线观看| 久久精品噜噜噜成人av农村| 久久91精品国产91久久小草| 国产精品香蕉一区二区三区| 丁香五精品蜜臀久久久久99网站| 成人18视频在线播放| 色综合久久中文字幕综合网| 欧美在线观看一二区| 欧美欧美欧美欧美| 26uuu亚洲| 亚洲天堂网中文字| 石原莉奈在线亚洲二区| 经典三级一区二区| 99国产精品视频免费观看| 欧日韩精品视频| 日韩精品中文字幕一区| 国产欧美久久久精品影院| 亚洲天堂免费在线观看视频| 亚洲成人一区二区在线观看| 久久99国产精品久久| 99久久精品免费看国产免费软件| 欧美综合一区二区三区| 91精品福利在线一区二区三区| 2017欧美狠狠色| 一区二区三区四区在线免费观看| 日韩精品国产欧美| 成人性视频免费网站| 欧美三级蜜桃2在线观看| 久久久影视传媒| 亚洲一本大道在线| 国产精品资源在线观看| 欧美在线|欧美| 国产午夜亚洲精品不卡| 午夜视频在线观看一区二区| 国产激情一区二区三区| 欧美三级资源在线| 精品久久久久一区| 亚洲va欧美va人人爽午夜| 国产大陆a不卡| 欧美夫妻性生活| 亚洲欧洲精品天堂一级| 免费观看成人av| 91黄色免费网站| 久久精品人人做人人爽人人| 肉色丝袜一区二区| 91小宝寻花一区二区三区| 亚洲精品一区在线观看| 亚洲一区二区三区小说| 成人天堂资源www在线| 日韩欧美一区二区视频| 亚洲国产欧美在线| av激情亚洲男人天堂| www久久精品| 蜜桃视频一区二区| 欧美日韩一区二区欧美激情| 国产精品全国免费观看高清| 精品亚洲国产成人av制服丝袜| 欧美在线免费播放| 亚洲丝袜精品丝袜在线| 国产成人精品免费| 日韩精品在线看片z| 午夜天堂影视香蕉久久| 91福利社在线观看| 日韩理论电影院| 成人国产精品免费观看动漫| 精品美女一区二区三区| 免费成人av在线| 欧美日韩在线电影| 亚洲最大色网站| 91视频91自| 亚洲欧美aⅴ...| a在线欧美一区| 国产精品福利电影一区二区三区四区| 激情六月婷婷久久| 亚洲精品在线观看视频| 六月丁香婷婷久久| 日韩欧美一级精品久久| 免费观看成人av| 欧美变态tickle挠乳网站| 日本不卡一区二区三区| 制服丝袜中文字幕亚洲| 日本vs亚洲vs韩国一区三区二区| 欧美久久久久中文字幕| 午夜精品成人在线| 91精品久久久久久久91蜜桃| 日本亚洲免费观看| 日韩美女视频在线| 国产在线观看一区二区 | 国产福利一区在线观看| 精品91自产拍在线观看一区| 国内成+人亚洲+欧美+综合在线 | 制服丝袜亚洲色图| 美女视频免费一区| 久久综合九色综合97婷婷| 国产精品911| 中文字幕欧美一| 欧美亚洲综合在线| 日本不卡视频在线| 国产夜色精品一区二区av| 成人va在线观看| 一区二区三区四区精品在线视频| 欧美视频一区在线观看| 日本中文字幕一区二区有限公司| 日韩欧美一级二级| 国产91富婆露脸刺激对白| 亚洲精品成a人| 欧美一区二区二区| 国产成人av电影| 一卡二卡三卡日韩欧美| 日韩一区二区三免费高清| 国产福利一区二区三区在线视频| 亚洲人精品一区| 欧美一级xxx| 成人99免费视频| 五月激情综合婷婷| 久久久久9999亚洲精品| 91美女视频网站| 美国毛片一区二区三区| 专区另类欧美日韩| 欧美日韩视频一区二区| 国产一区二区主播在线| 亚洲天堂成人网| 日韩一区二区电影在线| 99久久久国产精品| 麻豆国产欧美日韩综合精品二区| 中文字幕欧美激情| 3d动漫精品啪啪| 波波电影院一区二区三区| 午夜精品视频在线观看| 国产视频一区二区在线| 欧美亚洲精品一区| 国产乱人伦偷精品视频不卡| 一二三四区精品视频| 久久天堂av综合合色蜜桃网| 欧洲国产伦久久久久久久| 国产电影一区二区三区| 性感美女极品91精品| 国产精品每日更新| 日韩欧美精品三级| 91成人免费电影| 国产成人av电影在线播放| 青青草成人在线观看| 亚洲免费成人av| 欧美激情一区不卡| 欧美电影免费观看高清完整版在| 色综合久久久久| 国产 欧美在线| 美脚の诱脚舐め脚责91|