54128047 src/session/task.c          (Jonas Fonseca                 2003-12-06 02:57:46 +0000   1) /* Sessions task management */
850b435e session.c                   (Petr Baudis                   2002-03-16 00:23:26 +0000   2) 
850b435e session.c                   (Petr Baudis                   2002-03-16 00:23:26 +0000   3) #ifdef HAVE_CONFIG_H
850b435e session.c                   (Petr Baudis                   2002-03-16 00:23:26 +0000   4) #include "config.h"
850b435e session.c                   (Petr Baudis                   2002-03-16 00:23:26 +0000   5) #endif
850b435e session.c                   (Petr Baudis                   2002-03-16 00:23:26 +0000   6) 
850b435e session.c                   (Petr Baudis                   2002-03-16 00:23:26 +0000   7) #include <stdio.h>
850b435e session.c                   (Petr Baudis                   2002-03-16 00:23:26 +0000   8) #include <stdlib.h>
850b435e session.c                   (Petr Baudis                   2002-03-16 00:23:26 +0000   9) #include <string.h>
850b435e session.c                   (Petr Baudis                   2002-03-16 00:23:26 +0000  10) 
993bab89 src/document/session.c      (Petr Baudis                   2002-12-07 20:05:50 +0000  11) #include "elinks.h"
f22ed2e3 src/document/session.c      (Petr Baudis                   2002-05-08 13:55:00 +0000  12) 
a3004c19 src/session/task.c          (Petr Baudis                   2003-12-06 21:58:15 +0000  13) #include "bfu/menu.h"
e955f102 src/session/task.c          (Laurent Monin                 2004-11-19 16:16:26 +0000  14) #include "bfu/dialog.h"
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000  15) #include "cache/cache.h"
bbe09fc9 src/session/task.c          (Jonas Fonseca                 2005-07-21 14:32:59 +0000  16) #include "dialogs/menu.h"
a3004c19 src/session/task.c          (Petr Baudis                   2003-12-06 21:58:15 +0000  17) #include "dialogs/status.h"
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000  18) #include "document/document.h"
a3004c19 src/session/task.c          (Petr Baudis                   2003-12-06 21:58:15 +0000  19) #include "document/html/parser.h"
a3004c19 src/session/task.c          (Petr Baudis                   2003-12-06 21:58:15 +0000  20) #include "document/refresh.h"
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000  21) #include "document/view.h"
a3004c19 src/session/task.c          (Petr Baudis                   2003-12-06 21:58:15 +0000  22) #include "intl/gettext/libintl.h"
8061082a src/session/task.c          (Jonas Fonseca                 2005-06-13 00:43:26 +0000  23) #include "main/event.h"
8061082a src/session/task.c          (Jonas Fonseca                 2005-06-13 00:43:26 +0000  24) #include "main/timer.h"
9b1bdf3e src/session/task.c          (Jonas Fonseca                 2005-06-12 01:47:53 +0000  25) #include "network/connection.h"
bbe09fc9 src/session/task.c          (Jonas Fonseca                 2005-07-21 14:32:59 +0000  26) #include "osdep/newwin.h"
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000  27) #include "protocol/protocol.h"
c7f7f06b src/session/task.c          (Jonas Fonseca                 2004-03-31 20:29:11 +0000  28) #include "protocol/uri.h"
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000  29) #include "terminal/terminal.h"
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000  30) #include "terminal/window.h"
e61b9b1f src/session/task.c          (Jonas Fonseca                 2005-06-14 12:25:19 +0000  31) #include "session/download.h"
e61b9b1f src/session/task.c          (Jonas Fonseca                 2005-06-14 12:25:19 +0000  32) #include "session/location.h"
e61b9b1f src/session/task.c          (Jonas Fonseca                 2005-06-14 12:25:19 +0000  33) #include "session/session.h"
e61b9b1f src/session/task.c          (Jonas Fonseca                 2005-06-14 12:25:19 +0000  34) #include "session/task.h"
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000  35) #include "viewer/text/view.h"
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000  36) 
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000  37) 
1e2506a6 src/session/task.c          (Jonas Fonseca                 2005-04-27 21:51:47 +0000  38) static void loading_callback(struct download *, struct session *);
1e2506a6 src/session/task.c          (Jonas Fonseca                 2005-04-27 21:51:47 +0000  39) 
e9f9b019 src/document/session.c      (Laurent Monin                 2002-12-16 23:21:35 +0000  40) static void
05c9d5e1 src/session/session.c       (Jonas Fonseca                 2003-06-12 00:02:07 +0000  41) free_task(struct session *ses)
aae80e06 session.c                   (Petr Baudis                   2001-10-27 21:43:43 +0000  42) {
b35fc8ea src/session/session.c       (Petr Baudis                   2003-12-06 16:44:24 +0000  43) 	assertm(ses->task.type, "Session has no task");
b44224a6 src/session/session.c       (Laurent Monin                 2003-07-28 16:15:15 +0000  44) 	if_assert_failed return;
5241c7e7 src/document/session.c      (Laurent Monin                 2002-05-08 15:48:05 +0000  45) 
c8a2599d src/session/task.c          (Jonas Fonseca                 2004-04-01 01:09:40 +0000  46) 	if (ses->loading_uri) {
560e79c6 src/session/task.c          (Jonas Fonseca                 2004-04-01 02:48:53 +0000  47) 		done_uri(ses->loading_uri);
c8a2599d src/session/task.c          (Jonas Fonseca                 2004-04-01 01:09:40 +0000  48) 		ses->loading_uri = NULL;
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000  49) 	}
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000  50) 	ses->task.type = TASK_NONE;
aae80e06 session.c                   (Petr Baudis                   2001-10-27 21:43:43 +0000  51) }
aae80e06 session.c                   (Petr Baudis                   2001-10-27 21:43:43 +0000  52) 
5241c7e7 src/document/session.c      (Laurent Monin                 2002-05-08 15:48:05 +0000  53) void
907decde src/document/session.c      (Petr Baudis                   2002-12-05 23:16:08 +0000  54) abort_preloading(struct session *ses, int interrupt)
aae80e06 session.c                   (Petr Baudis                   2001-10-27 21:43:43 +0000  55) {
b35fc8ea src/session/session.c       (Petr Baudis                   2003-12-06 16:44:24 +0000  56) 	if (!ses->task.type) return;
77b13c7e src/session/session.c       (Laurent Monin                 2003-08-01 14:34:56 +0000  57) 
3324496b src/session/task.c          (Jonas Fonseca                 2006-02-03 10:44:28 +0100  58) 	cancel_download(&ses->loading, interrupt);
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000  59) 	free_task(ses);
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000  60) }
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000  61) 
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000  62) 
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000  63) struct task {
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000  64) 	struct session *ses;
6e0fe9d0 src/session/task.c          (Jonas Fonseca                 2004-04-01 17:13:06 +0000  65) 	struct uri *uri;
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000  66) 	enum cache_mode cache_mode;
77a6bc02 src/session/task.c          (Laurent Monin                 2005-03-02 16:31:03 +0000  67) 	struct session_task session_task;
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000  68) };
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000  69) 
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000  70) static void
93d6d959 src/session/task.c          (Miciah Dashiel Butler Masters 2005-11-14 08:46:17 +0000  71) ses_load(struct session *ses, struct uri *uri, unsigned char *target_frame,
93d6d959 src/session/task.c          (Miciah Dashiel Butler Masters 2005-11-14 08:46:17 +0000  72) 	 struct location *target_location, enum cache_mode cache_mode,
93d6d959 src/session/task.c          (Miciah Dashiel Butler Masters 2005-11-14 08:46:17 +0000  73) 	 enum task_type task_type)
93d6d959 src/session/task.c          (Miciah Dashiel Butler Masters 2005-11-14 08:46:17 +0000  74) {
93d6d959 src/session/task.c          (Miciah Dashiel Butler Masters 2005-11-14 08:46:17 +0000  75) 	ses->loading.callback = (download_callback_T *) loading_callback;
93d6d959 src/session/task.c          (Miciah Dashiel Butler Masters 2005-11-14 08:46:17 +0000  76) 	ses->loading.data = ses;
93d6d959 src/session/task.c          (Miciah Dashiel Butler Masters 2005-11-14 08:46:17 +0000  77) 	ses->loading_uri = uri;
93d6d959 src/session/task.c          (Miciah Dashiel Butler Masters 2005-11-14 08:46:17 +0000  78) 
93d6d959 src/session/task.c          (Miciah Dashiel Butler Masters 2005-11-14 08:46:17 +0000  79) 	ses->task.type = task_type;
93d6d959 src/session/task.c          (Miciah Dashiel Butler Masters 2005-11-14 08:46:17 +0000  80) 	ses->task.target.frame = target_frame;
93d6d959 src/session/task.c          (Miciah Dashiel Butler Masters 2005-11-14 08:46:17 +0000  81) 	ses->task.target.location = target_location;
93d6d959 src/session/task.c          (Miciah Dashiel Butler Masters 2005-11-14 08:46:17 +0000  82) 
93d6d959 src/session/task.c          (Miciah Dashiel Butler Masters 2005-11-14 08:46:17 +0000  83) 	load_uri(ses->loading_uri, ses->referrer, &ses->loading,
93d6d959 src/session/task.c          (Miciah Dashiel Butler Masters 2005-11-14 08:46:17 +0000  84) 		 PRI_MAIN, cache_mode, -1);
93d6d959 src/session/task.c          (Miciah Dashiel Butler Masters 2005-11-14 08:46:17 +0000  85) }
93d6d959 src/session/task.c          (Miciah Dashiel Butler Masters 2005-11-14 08:46:17 +0000  86) 
93d6d959 src/session/task.c          (Miciah Dashiel Butler Masters 2005-11-14 08:46:17 +0000  87) static void
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000  88) post_yes(struct task *task)
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000  89) {
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000  90) 	abort_preloading(task->ses, 0);
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000  91) 
97ad0e0f src/session/task.c          (Miciah Dashiel Butler Masters 2005-11-14 08:51:09 +0000  92) 	/* XXX: Make the session inherit the URI. */
97ad0e0f src/session/task.c          (Miciah Dashiel Butler Masters 2005-11-14 08:51:09 +0000  93) 	ses_load(task->ses, task->uri, task->session_task.target.frame,
97ad0e0f src/session/task.c          (Miciah Dashiel Butler Masters 2005-11-14 08:51:09 +0000  94) 	         task->session_task.target.location, task->cache_mode,
97ad0e0f src/session/task.c          (Miciah Dashiel Butler Masters 2005-11-14 08:51:09 +0000  95) 	         task->session_task.type);
aae80e06 session.c                   (Petr Baudis                   2001-10-27 21:43:43 +0000  96) }
aae80e06 session.c                   (Petr Baudis                   2001-10-27 21:43:43 +0000  97) 
ba66b278 src/document/session.c      (Petr Baudis                   2002-12-26 03:06:34 +0000  98) static void
05c9d5e1 src/session/session.c       (Jonas Fonseca                 2003-06-12 00:02:07 +0000  99) post_no(struct task *task)
aae80e06 session.c                   (Petr Baudis                   2001-10-27 21:43:43 +0000 100) {
6937c065 src/session/session.c       (Petr Baudis                   2003-11-11 21:57:30 +0000 101) 	reload(task->ses, CACHE_MODE_NORMAL);
6e0fe9d0 src/session/task.c          (Jonas Fonseca                 2004-04-01 17:13:06 +0000 102) 	done_uri(task->uri);
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 103) }
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 104) 
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 105) /* Check if the URI is obfuscated (bug 382). The problem is said to occur when
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 106)  * a URI designed to pass access a specific location with a supplied username,
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 107)  * contains misleading chars prior to the @ symbol.
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 108)  *
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 109)  * An attacker can exploit this issue by supplying a malicious URI pointing to
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 110)  * a page designed to mimic that of a trusted site, and tricking a victim who
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 111)  * follows a link into believing they are actually at the trusted location.
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 112)  *
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 113)  * Only the user ID (and not also the password) is checked because only the
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 114)  * user ID is displayed in the status bar. */
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 115) static int
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 116) check_malicious_uri(struct uri *uri)
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 117) {
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 118) 	unsigned char *user, *pos;
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 119) 	int warn = 0;
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 120) 
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 121) 	assert(uri->user && uri->userlen);
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 122) 
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 123) 	user = pos = memacpy(uri->user, uri->userlen);
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 124) 	if (!user) return 0;
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 125) 
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 126) 	decode_uri_for_display(user);
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 127) 
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 128) 	while (*pos) {
85e4e4be src/session/task.c          (Jonas Fonseca                 2004-12-18 23:05:19 +0000 129) 		int length, trailing_dots;
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 130) 
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 131) 		for (length = 0; pos[length] != '\0'; length++)
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 132) 			if (!(isalnum(pos[length]) || pos[length] == '.'))
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 133) 				break;
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 134) 
85e4e4be src/session/task.c          (Jonas Fonseca                 2004-12-18 23:05:19 +0000 135) 		/* Wind back so that the TLD part is checked correctly. */
85e4e4be src/session/task.c          (Jonas Fonseca                 2004-12-18 23:05:19 +0000 136) 		for (trailing_dots = 0; trailing_dots < length; trailing_dots++)
85e4e4be src/session/task.c          (Jonas Fonseca                 2004-12-18 23:05:19 +0000 137) 			if (!length || pos[length - trailing_dots - 1] != '.')
85e4e4be src/session/task.c          (Jonas Fonseca                 2004-12-18 23:05:19 +0000 138) 				break;
85e4e4be src/session/task.c          (Jonas Fonseca                 2004-12-18 23:05:19 +0000 139) 
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 140) 		/* Not perfect, but I am clueless as how to do better. Besides
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 141) 		 * I don't really think it is an issue for ELinks. --jonas */
85e4e4be src/session/task.c          (Jonas Fonseca                 2004-12-18 23:05:19 +0000 142) 		if (end_with_known_tld(pos, length - trailing_dots) != -1) {
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 143) 			warn = 1;
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 144) 			break;
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 145) 		}
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 146) 
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 147) 		pos += length;
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 148) 
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 149) 		while (*pos && (!isalnum(*pos) || *pos == '.'))
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 150) 			pos++;
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 151) 	}
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 152) 
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 153) 	mem_free(user);
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 154) 
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 155) 	return warn;
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 156) }
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 157) 
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 158) void
209ff36a src/session/task.c          (Jonas Fonseca                 2004-04-02 16:53:35 +0000 159) ses_goto(struct session *ses, struct uri *uri, unsigned char *target_frame,
a466d031 src/session/task.c          (Jonas Fonseca                 2004-05-29 02:44:27 +0000 160) 	 struct location *target_location, enum cache_mode cache_mode,
5f734c3a src/session/task.c          (Jonas Fonseca                 2004-06-08 13:49:09 +0000 161) 	 enum task_type task_type, int redir)
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 162) {
4c283167 src/session/task.c          (Kalle Olavi Niemitalo         2005-12-05 01:38:29 +0200 163) 	/* [gettext_accelerator_context(ses_goto)] */
ac24ebbf src/session/task.c          (Laurent Monin                 2005-03-02 17:35:38 +0000 164) 	struct task *task;
d68c99ea src/session/task.c          (Jonas Fonseca                 2004-05-28 17:35:08 +0000 165) 	int referrer_incomplete = 0;
18d1a4be src/session/task.c          (Petr Baudis                   2004-12-18 21:37:13 +0000 166) 	int malicious_uri = 0;
cdd3f5d9 src/session/task.c          (Miciah Dashiel Butler Masters 2005-11-14 09:02:08 +0000 167) 	int confirm_submit = uri->form && get_opt_bool("document.browse.forms"
cdd3f5d9 src/session/task.c          (Miciah Dashiel Butler Masters 2005-11-14 09:02:08 +0000 168) 	                                               ".confirm_submit");
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 169) 	unsigned char *m1 = NULL, *message = NULL;
d9b8799e src/document/session.c      (Petr Baudis                   2002-03-17 17:27:48 +0000 170) 
0d7b4ece src/session/session.c       (Laurent Monin                 2003-10-17 15:31:43 +0000 171) 	if (ses->doc_view
0d7b4ece src/session/session.c       (Laurent Monin                 2003-10-17 15:31:43 +0000 172) 	    && ses->doc_view->document
0d7b4ece src/session/session.c       (Laurent Monin                 2003-10-17 15:31:43 +0000 173) 	    && ses->doc_view->document->refresh) {
0d7b4ece src/session/session.c       (Laurent Monin                 2003-10-17 15:31:43 +0000 174) 		kill_document_refresh(ses->doc_view->document->refresh);
4f1a5510 src/session/session.c       (Jonas Fonseca                 2003-09-05 13:40:32 +0000 175) 	}
4f1a5510 src/session/session.c       (Jonas Fonseca                 2003-09-05 13:40:32 +0000 176) 
ecf3180f src/session/task.c          (Jonas Fonseca                 2004-04-08 14:14:22 +0000 177) 	assertm(!ses->loading_uri, "Buggy URI reference counting");
ecf3180f src/session/task.c          (Jonas Fonseca                 2004-04-08 14:14:22 +0000 178) 
d099f647 src/session/task.c          (Jonas Fonseca                 2004-11-08 19:15:10 +0000 179) 	/* Reset the redirect counter if this is not a redirect. */
d099f647 src/session/task.c          (Jonas Fonseca                 2004-11-08 19:15:10 +0000 180) 	if (!redir) {
d099f647 src/session/task.c          (Jonas Fonseca                 2004-11-08 19:15:10 +0000 181) 		ses->redirect_cnt = 0;
d099f647 src/session/task.c          (Jonas Fonseca                 2004-11-08 19:15:10 +0000 182) 	}
d099f647 src/session/task.c          (Jonas Fonseca                 2004-11-08 19:15:10 +0000 183) 
4f2ccbdc src/session/task.c          (Jonas Fonseca                 2004-05-28 16:50:43 +0000 184) 	/* Figure out whether to confirm submit or not */
4f2ccbdc src/session/task.c          (Jonas Fonseca                 2004-05-28 16:50:43 +0000 185) 
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 186) 	/* Only confirm submit if we are posting form data or a misleading URI
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 187) 	 * was detected. */
d68c99ea src/session/task.c          (Jonas Fonseca                 2004-05-28 17:35:08 +0000 188) 	/* Note uri->post might be empty here but we are still supposely
d68c99ea src/session/task.c          (Jonas Fonseca                 2004-05-28 17:35:08 +0000 189) 	 * posting form data so this should be more correct. */
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 190) 
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 191) 	if (uri->user && uri->userlen
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 192) 	    && get_opt_bool("document.browse.links.warn_malicious")
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 193) 	    && check_malicious_uri(uri)) {
18d1a4be src/session/task.c          (Petr Baudis                   2004-12-18 21:37:13 +0000 194) 		malicious_uri = 1;
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 195) 		confirm_submit = 1;
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 196) 
16c0afb5 src/session/task.c          (Miciah Dashiel Butler Masters 2005-11-14 08:27:55 +0000 197) 	} else if (uri->form) {
4f2ccbdc src/session/task.c          (Jonas Fonseca                 2004-05-28 16:50:43 +0000 198) 		/* First check if the referring URI was incomplete. It
4f2ccbdc src/session/task.c          (Jonas Fonseca                 2004-05-28 16:50:43 +0000 199) 		 * indicates that the posted form data might be incomplete too.
4f2ccbdc src/session/task.c          (Jonas Fonseca                 2004-05-28 16:50:43 +0000 200) 		 * See bug 460. */
d68c99ea src/session/task.c          (Jonas Fonseca                 2004-05-28 17:35:08 +0000 201) 		if (ses->referrer) {
683d73d8 src/session/task.c          (Miciah Dashiel Butler Masters 2005-11-14 08:53:03 +0000 202) 			struct cache_entry *cached;
683d73d8 src/session/task.c          (Miciah Dashiel Butler Masters 2005-11-14 08:53:03 +0000 203) 
d68c99ea src/session/task.c          (Jonas Fonseca                 2004-05-28 17:35:08 +0000 204) 			cached = find_in_cache(ses->referrer);
d68c99ea src/session/task.c          (Jonas Fonseca                 2004-05-28 17:35:08 +0000 205) 			referrer_incomplete = (cached && cached->incomplete);
d68c99ea src/session/task.c          (Jonas Fonseca                 2004-05-28 17:35:08 +0000 206) 		}
4f2ccbdc src/session/task.c          (Jonas Fonseca                 2004-05-28 16:50:43 +0000 207) 
a0fb29bc src/session/task.c          (Jonas Fonseca                 2005-11-15 10:20:48 +0100 208) 		if (referrer_incomplete) {
cdd3f5d9 src/session/task.c          (Miciah Dashiel Butler Masters 2005-11-14 09:02:08 +0000 209) 			confirm_submit = 1;
4f2ccbdc src/session/task.c          (Jonas Fonseca                 2004-05-28 16:50:43 +0000 210) 
ebeb8d75 src/session/task.c          (Jonas Fonseca                 2004-05-29 13:33:29 +0000 211) 		} else if (get_validated_cache_entry(uri, cache_mode)) {
51795d3a src/session/task.c          (Jonas Fonseca                 2004-05-29 13:36:35 +0000 212) 			confirm_submit = 0;
4f2ccbdc src/session/task.c          (Jonas Fonseca                 2004-05-28 16:50:43 +0000 213) 		}
4f2ccbdc src/session/task.c          (Jonas Fonseca                 2004-05-28 16:50:43 +0000 214) 	}
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 215) 
4f2ccbdc src/session/task.c          (Jonas Fonseca                 2004-05-28 16:50:43 +0000 216) 	if (!confirm_submit) {
93d6d959 src/session/task.c          (Miciah Dashiel Butler Masters 2005-11-14 08:46:17 +0000 217) 		ses_load(ses, get_uri_reference(uri), target_frame,
93d6d959 src/session/task.c          (Miciah Dashiel Butler Masters 2005-11-14 08:46:17 +0000 218) 		         target_location, cache_mode, task_type);
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 219) 		return;
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 220) 	}
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 221) 
b182d1e2 src/session/task.c          (Laurent Monin                 2005-02-28 14:29:39 +0000 222) 	task = mem_alloc(sizeof(*task));
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 223) 	if (!task) return;
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 224) 
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 225) 	task->ses = ses;
21ddf19f src/session/task.c          (Jonas Fonseca                 2004-06-08 14:15:27 +0000 226) 	task->uri = get_uri_reference(uri);
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 227) 	task->cache_mode = cache_mode;
77a6bc02 src/session/task.c          (Laurent Monin                 2005-03-02 16:31:03 +0000 228) 	task->session_task.type = task_type;
794997cd src/session/task.c          (Laurent Monin                 2005-03-02 16:37:50 +0000 229) 	task->session_task.target.frame = target_frame;
794997cd src/session/task.c          (Laurent Monin                 2005-03-02 16:37:50 +0000 230) 	task->session_task.target.location = target_location;
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 231) 
18d1a4be src/session/task.c          (Petr Baudis                   2004-12-18 21:37:13 +0000 232) 	if (malicious_uri) {
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 233) 		unsigned char *host = memacpy(uri->host, uri->hostlen);
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 234) 		unsigned char *user = memacpy(uri->user, uri->userlen);
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 235) 		unsigned char *uristring = get_uri_string(uri, URI_PUBLIC);
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 236) 
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 237) 		message = msg_text(ses->tab->term,
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 238) 			N_("The URL you are about to follow might be maliciously "
ec66229f src/session/task.c          (Petr Baudis                   2004-12-18 21:38:09 +0000 239) 			"crafted in order to confuse you. By following the URL "
ec66229f src/session/task.c          (Petr Baudis                   2004-12-18 21:38:09 +0000 240) 			"you will be connecting to host \"%s\" as user \"%s\".\n\n"
ec66229f src/session/task.c          (Petr Baudis                   2004-12-18 21:38:09 +0000 241) 			"Do you want to go to URL %s?"), host, user, uristring);
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 242) 
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 243) 		mem_free_if(host);
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 244) 		mem_free_if(user);
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 245) 		mem_free_if(uristring);
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 246) 
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 247) 	} else if (redir) {
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 248) 		m1 = N_("Do you want to follow the redirect and post form data "
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 249) 			"to URL %s?");
4f2ccbdc src/session/task.c          (Jonas Fonseca                 2004-05-28 16:50:43 +0000 250) 
d68c99ea src/session/task.c          (Jonas Fonseca                 2004-05-28 17:35:08 +0000 251) 	} else if (referrer_incomplete) {
4f2ccbdc src/session/task.c          (Jonas Fonseca                 2004-05-28 16:50:43 +0000 252) 		m1 = N_("The form data you are about to post might be incomplete.\n"
4f2ccbdc src/session/task.c          (Jonas Fonseca                 2004-05-28 16:50:43 +0000 253) 			"Do you want to post to URL %s?");
4f2ccbdc src/session/task.c          (Jonas Fonseca                 2004-05-28 16:50:43 +0000 254) 
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 255) 	} else if (task_type == TASK_FORWARD) {
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 256) 		m1 = N_("Do you want to post form data to URL %s?");
4f2ccbdc src/session/task.c          (Jonas Fonseca                 2004-05-28 16:50:43 +0000 257) 
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 258) 	} else {
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 259) 		m1 = N_("Do you want to repost form data to URL %s?");
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 260) 	}
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 261) 
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 262) 	if (!message && m1) {
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 263) 		unsigned char *uristring = get_uri_string(uri, URI_PUBLIC);
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 264) 
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 265) 		message = msg_text(ses->tab->term, m1, uristring);
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 266) 		mem_free_if(uristring);
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 267) 	}
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 268) 
5f734c3a src/session/task.c          (Jonas Fonseca                 2004-06-08 13:49:09 +0000 269) 	msg_box(ses->tab->term, getml(task, NULL), MSGBOX_FREE_TEXT,
9b705ada src/session/task.c          (Jonas Fonseca                 2004-06-28 11:07:10 +0000 270) 		N_("Warning"), ALIGN_CENTER,
2a33a592 src/session/task.c          (Jonas Fonseca                 2004-12-18 20:45:43 +0000 271) 		message,
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 272) 		task, 2,
88b1b461 src/session/task.c          (Miciah Dashiel Butler Masters 2005-03-23 15:43:41 +0000 273) 		N_("~Yes"), post_yes, B_ENTER,
88b1b461 src/session/task.c          (Miciah Dashiel Butler Masters 2005-03-23 15:43:41 +0000 274) 		N_("~No"), post_no, B_ESC);
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 275) }
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 276) 
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 277) 
95dcf7a4 src/session/task.c          (Petr Baudis                   2004-09-28 16:55:54 +0000 278) /* If @loaded_in_frame is set, this was called just to indicate a move inside a
95dcf7a4 src/session/task.c          (Petr Baudis                   2004-09-28 16:55:54 +0000 279)  * frameset, and we basically just reset the appropriate frame's view_state in
95dcf7a4 src/session/task.c          (Petr Baudis                   2004-09-28 16:55:54 +0000 280)  * that case. When clicking on a link inside a frame, the frame URI is somehow
95dcf7a4 src/session/task.c          (Petr Baudis                   2004-09-28 16:55:54 +0000 281)  * updated and added to the files-to-load queue, then ses_forward() is called
95dcf7a4 src/session/task.c          (Petr Baudis                   2004-09-28 16:55:54 +0000 282)  * with @loaded_in_frame unset, duplicating the whole frameset's location, then
95dcf7a4 src/session/task.c          (Petr Baudis                   2004-09-28 16:55:54 +0000 283)  * later the file-to-load callback calls it for the particular frame with
95dcf7a4 src/session/task.c          (Petr Baudis                   2004-09-28 16:55:54 +0000 284)  * @loaded_in_frame set. */
0e110510 src/session/session.c       (Witold Filipczyk              2003-11-16 06:28:59 +0000 285) struct view_state *
b57ef9d6 src/session/session.c       (Witold Filipczyk              2003-11-21 04:57:22 +0000 286) ses_forward(struct session *ses, int loaded_in_frame)
aae80e06 session.c                   (Petr Baudis                   2001-10-27 21:43:43 +0000 287) {
b57ef9d6 src/session/session.c       (Witold Filipczyk              2003-11-21 04:57:22 +0000 288) 	struct location *loc = NULL;
0e110510 src/session/session.c       (Witold Filipczyk              2003-11-16 06:28:59 +0000 289) 	struct view_state *vs;
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 290) 
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 291) 	if (!loaded_in_frame) {
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 292) 		free_files(ses);
a2c407a2 src/session/task.c          (Laurent Monin                 2004-04-19 15:56:44 +0000 293) 		mem_free_set(&ses->search_word, NULL);
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 294) 	}
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 295) 
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 296) x:
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 297) 	if (!loaded_in_frame) {
b182d1e2 src/session/task.c          (Laurent Monin                 2005-02-28 14:29:39 +0000 298) 		loc = mem_calloc(1, sizeof(*loc));
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 299) 		if (!loc) return NULL;
d49b4377 src/session/task.c          (Laurent Monin                 2004-12-29 14:59:34 +0000 300) 		copy_struct(&loc->download, &ses->loading);
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 301) 	}
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 302) 
794997cd src/session/task.c          (Laurent Monin                 2005-03-02 16:37:50 +0000 303) 	if (ses->task.target.frame && *ses->task.target.frame) {
f499e9a2 src/session/session.c       (Laurent Monin                 2003-10-29 15:25:38 +0000 304) 		struct frame *frame;
5241c7e7 src/document/session.c      (Laurent Monin                 2002-05-08 15:48:05 +0000 305) 
77b13c7e src/session/session.c       (Laurent Monin                 2003-08-01 14:34:56 +0000 306) 		assertm(have_location(ses), "no location yet");
0e110510 src/session/session.c       (Witold Filipczyk              2003-11-16 06:28:59 +0000 307) 		if_assert_failed return NULL;
77b13c7e src/session/session.c       (Laurent Monin                 2003-08-01 14:34:56 +0000 308) 
b57ef9d6 src/session/session.c       (Witold Filipczyk              2003-11-21 04:57:22 +0000 309) 		if (!loaded_in_frame) {
b57ef9d6 src/session/session.c       (Witold Filipczyk              2003-11-21 04:57:22 +0000 310) 			copy_location(loc, cur_loc(ses));
b57ef9d6 src/session/session.c       (Witold Filipczyk              2003-11-21 04:57:22 +0000 311) 			add_to_history(&ses->history, loc);
b57ef9d6 src/session/session.c       (Witold Filipczyk              2003-11-21 04:57:22 +0000 312) 		}
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 313) 
794997cd src/session/task.c          (Laurent Monin                 2005-03-02 16:37:50 +0000 314) 		frame = ses_find_frame(ses, ses->task.target.frame);
f499e9a2 src/session/session.c       (Laurent Monin                 2003-10-29 15:25:38 +0000 315) 		if (!frame) {
b57ef9d6 src/session/session.c       (Witold Filipczyk              2003-11-21 04:57:22 +0000 316) 			if (!loaded_in_frame) {
b57ef9d6 src/session/session.c       (Witold Filipczyk              2003-11-21 04:57:22 +0000 317) 				del_from_history(&ses->history, loc);
b57ef9d6 src/session/session.c       (Witold Filipczyk              2003-11-21 04:57:22 +0000 318) 				destroy_location(loc);
b57ef9d6 src/session/session.c       (Witold Filipczyk              2003-11-21 04:57:22 +0000 319) 			}
794997cd src/session/task.c          (Laurent Monin                 2005-03-02 16:37:50 +0000 320) 			ses->task.target.frame = NULL;
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 321) 			goto x;
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 322) 		}
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 323) 
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 324) 		vs = &frame->vs;
2db57110 src/session/task.c          (Witold Filipczyk              2003-12-10 00:12:08 +0000 325) 		if (!loaded_in_frame) {
73e76253 src/session/task.c          (Petr Baudis                   2004-09-26 12:13:08 +0000 326) 			destroy_vs(vs, 1);
21ddf19f src/session/task.c          (Jonas Fonseca                 2004-06-08 14:15:27 +0000 327) 			init_vs(vs, ses->loading_uri, vs->plain);
cea3ba78 src/session/task.c          (Petr Baudis                   2004-09-28 16:46:51 +0000 328) 		} else {
cea3ba78 src/session/task.c          (Petr Baudis                   2004-09-28 16:46:51 +0000 329) 			done_uri(vs->uri);
cea3ba78 src/session/task.c          (Petr Baudis                   2004-09-28 16:46:51 +0000 330) 			vs->uri = get_uri_reference(ses->loading_uri);
ccfe04b2 src/session/task.c          (Petr Baudis                   2004-09-28 17:56:45 +0000 331) 			if (vs->doc_view) {
ccfe04b2 src/session/task.c          (Petr Baudis                   2004-09-28 17:56:45 +0000 332) 				/* vs->doc_view itself will get detached in
ccfe04b2 src/session/task.c          (Petr Baudis                   2004-09-28 17:56:45 +0000 333) 				 * render_document_frames(), but that's too
ccfe04b2 src/session/task.c          (Petr Baudis                   2004-09-28 17:56:45 +0000 334) 				 * late for us. */
ccfe04b2 src/session/task.c          (Petr Baudis                   2004-09-28 17:56:45 +0000 335) 				vs->doc_view->vs = NULL;
ccfe04b2 src/session/task.c          (Petr Baudis                   2004-09-28 17:56:45 +0000 336) 				vs->doc_view = NULL;
ccfe04b2 src/session/task.c          (Petr Baudis                   2004-09-28 17:56:45 +0000 337) 			}
cea3ba78 src/session/task.c          (Petr Baudis                   2004-09-28 16:46:51 +0000 338) #ifdef CONFIG_ECMASCRIPT
cea3ba78 src/session/task.c          (Petr Baudis                   2004-09-28 16:46:51 +0000 339) 			vs->ecmascript_fragile = 1;
cea3ba78 src/session/task.c          (Petr Baudis                   2004-09-28 16:46:51 +0000 340) #endif
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 341) 		}
2e345608 src/session/task.c          (Laurent Monin                 2004-07-21 19:39:25 +0000 342) 
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 343) 	} else {
2e345608 src/session/task.c          (Laurent Monin                 2004-07-21 19:39:25 +0000 344) 		assert(loc);
2e345608 src/session/task.c          (Laurent Monin                 2004-07-21 19:39:25 +0000 345) 		if_assert_failed return NULL;
2e345608 src/session/task.c          (Laurent Monin                 2004-07-21 19:39:25 +0000 346) 
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 347) 		init_list(loc->frames);
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 348) 		vs = &loc->vs;
21ddf19f src/session/task.c          (Jonas Fonseca                 2004-06-08 14:15:27 +0000 349) 		init_vs(vs, ses->loading_uri, vs->plain);
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 350) 		add_to_history(&ses->history, loc);
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 351) 	}
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 352) 
22e1c089 src/session/task.c          (Miciah Dashiel Butler Masters 2004-01-11 05:41:30 +0000 353) 	ses->status.visited = 0;
22e1c089 src/session/task.c          (Miciah Dashiel Butler Masters 2004-01-11 05:41:30 +0000 354) 
a577b1dc src/session/session.c       (Petr Baudis                   2003-10-24 22:25:15 +0000 355) 	/* This is another "branch" in the browsing, so throw away the current
a577b1dc src/session/session.c       (Petr Baudis                   2003-10-24 22:25:15 +0000 356) 	 * unhistory, we are venturing in another direction! */
b35fc8ea src/session/session.c       (Petr Baudis                   2003-12-06 16:44:24 +0000 357) 	if (ses->task.type == TASK_FORWARD)
a577b1dc src/session/session.c       (Petr Baudis                   2003-10-24 22:25:15 +0000 358) 		clean_unhistory(&ses->history);
0e110510 src/session/session.c       (Witold Filipczyk              2003-11-16 06:28:59 +0000 359) 	return vs;
aae80e06 session.c                   (Petr Baudis                   2001-10-27 21:43:43 +0000 360) }
aae80e06 session.c                   (Petr Baudis                   2001-10-27 21:43:43 +0000 361) 
e9f9b019 src/document/session.c      (Laurent Monin                 2002-12-16 23:21:35 +0000 362) static void
5241c7e7 src/document/session.c      (Laurent Monin                 2002-05-08 15:48:05 +0000 363) ses_imgmap(struct session *ses)
aae80e06 session.c                   (Petr Baudis                   2001-10-27 21:43:43 +0000 364) {
16c45c71 src/session/task.c          (Jonas Fonseca                 2004-04-03 14:13:47 +0000 365) 	struct cache_entry *cached = find_in_cache(ses->loading_uri);
18939edd src/session/task.c          (Petr Baudis                   2004-07-22 17:04:30 +0000 366) 	struct document_view *doc_view = current_frame(ses);
e98ac976 src/session/task.c          (Jonas Fonseca                 2004-10-14 20:13:18 +0000 367) 	struct fragment *fragment;
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 368) 	struct memory_list *ml;
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 369) 	struct menu_item *menu;
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 370) 
16c45c71 src/session/task.c          (Jonas Fonseca                 2004-04-03 14:13:47 +0000 371) 	if (!cached) {
a5ec347d src/session/task.c          (Laurent Monin                 2003-12-21 14:56:54 +0000 372) 		INTERNAL("can't find cache entry");
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 373) 		return;
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 374) 	}
3c42a8b6 src/session/task.c          (Jonas Fonseca                 2004-06-08 15:08:58 +0000 375) 
e98ac976 src/session/task.c          (Jonas Fonseca                 2004-10-14 20:13:18 +0000 376) 	fragment = get_cache_fragment(cached);
e98ac976 src/session/task.c          (Jonas Fonseca                 2004-10-14 20:13:18 +0000 377) 	if (!fragment) return;
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 378) 
18939edd src/session/task.c          (Petr Baudis                   2004-07-22 17:04:30 +0000 379) 	if (!doc_view || !doc_view->document) return;
18939edd src/session/task.c          (Petr Baudis                   2004-07-22 17:04:30 +0000 380) 
e98ac976 src/session/task.c          (Jonas Fonseca                 2004-10-14 20:13:18 +0000 381) 	if (get_image_map(cached->head, fragment->data,
e98ac976 src/session/task.c          (Jonas Fonseca                 2004-10-14 20:13:18 +0000 382) 			  fragment->data + fragment->length,
4749ea19 src/session/task.c          (Jonas Fonseca                 2005-07-12 16:31:02 +0000 383) 			  &menu, &ml, ses->loading_uri,
4749ea19 src/session/task.c          (Jonas Fonseca                 2005-07-12 16:31:02 +0000 384) 			  &doc_view->document->options,
4749ea19 src/session/task.c          (Jonas Fonseca                 2005-07-12 16:31:02 +0000 385) 			  ses->task.target.frame,
85649c1c src/session/task.c          (Laurent Monin                 2005-01-05 16:54:58 +0000 386) 			  get_opt_codepage_tree(ses->tab->term->spec, "charset"),
85649c1c src/session/task.c          (Laurent Monin                 2005-01-05 16:54:58 +0000 387) 			  get_opt_codepage("document.codepage.assume"),
85649c1c src/session/task.c          (Laurent Monin                 2005-01-05 16:54:58 +0000 388) 			  get_opt_bool("document.codepage.force_assumed")))
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 389) 		return;
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 390) 
479a7c14 src/session/task.c          (Miciah Dashiel Butler Masters 2004-06-22 06:46:15 +0000 391) 	add_empty_window(ses->tab->term, (void (*)(void *)) freeml, ml);
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 392) 	do_menu(ses->tab->term, menu, ses, 0);
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 393) }
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 394) 
c92e00b6 src/session/task.c          (Jonas Fonseca                 2005-03-02 15:09:14 +0000 395) enum do_move {
c92e00b6 src/session/task.c          (Jonas Fonseca                 2005-03-02 15:09:14 +0000 396) 	DO_MOVE_ABORT,
c92e00b6 src/session/task.c          (Jonas Fonseca                 2005-03-02 15:09:14 +0000 397) 	DO_MOVE_DISPLAY,
c92e00b6 src/session/task.c          (Jonas Fonseca                 2005-03-02 15:09:14 +0000 398) 	DO_MOVE_DONE
c92e00b6 src/session/task.c          (Jonas Fonseca                 2005-03-02 15:09:14 +0000 399) };
c92e00b6 src/session/task.c          (Jonas Fonseca                 2005-03-02 15:09:14 +0000 400) 
c92e00b6 src/session/task.c          (Jonas Fonseca                 2005-03-02 15:09:14 +0000 401) static enum do_move
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 402) do_redirect(struct session *ses, struct download **download_p, struct cache_entry *cached)
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 403) {
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 404) 	enum task_type task = ses->task.type;
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 405) 
6facaf3c src/session/task.c          (Laurent Monin                 2005-03-02 16:06:31 +0000 406) 	if (task == TASK_HISTORY && !have_location(ses))
6facaf3c src/session/task.c          (Laurent Monin                 2005-03-02 16:06:31 +0000 407) 		return DO_MOVE_DISPLAY;
77a6bc02 src/session/task.c          (Laurent Monin                 2005-03-02 16:31:03 +0000 408) 
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 409) 	assertm(compare_uri(cached->uri, ses->loading_uri, URI_BASE),
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 410) 		"Redirecting using bad base URI");
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 411) 
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 412) 	if (cached->redirect->protocol == PROTOCOL_UNKNOWN)
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 413) 		return DO_MOVE_ABORT;
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 414) 
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 415) 	abort_loading(ses, 0);
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 416) 	if (have_location(ses))
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 417) 		*download_p = &cur_loc(ses)->download;
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 418) 	else
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 419) 		*download_p = NULL;
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 420) 
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 421) 	set_session_referrer(ses, cached->uri);
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 422) 
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 423) 	switch (task) {
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 424) 	case TASK_NONE:
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 425) 		break;
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 426) 	case TASK_FORWARD:
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 427) 	{
2351a364 src/session/task.c          (Jonas Fonseca                 2005-03-05 21:04:49 +0000 428) 		protocol_external_handler_T *fn;
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 429) 		struct uri *uri = cached->redirect;
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 430) 
0e7f8ffe src/session/task.c          (Witold Filipczyk              2005-09-06 14:16:48 +0000 431) 		fn = get_protocol_external_handler(ses->tab->term, uri);
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 432) 		if (fn) {
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 433) 			fn(ses, uri);
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 434) 			*download_p = NULL;
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 435) 			return DO_MOVE_ABORT;
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 436) 		}
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 437) 	}
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 438) 	/* Fall through. */
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 439) 	case TASK_IMGMAP:
794997cd src/session/task.c          (Laurent Monin                 2005-03-02 16:37:50 +0000 440) 		ses_goto(ses, cached->redirect, ses->task.target.frame, NULL,
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 441) 			 CACHE_MODE_NORMAL, task, 1);
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 442) 		return DO_MOVE_DONE;
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 443) 	case TASK_HISTORY:
794997cd src/session/task.c          (Laurent Monin                 2005-03-02 16:37:50 +0000 444) 		ses_goto(ses, cached->redirect, NULL, ses->task.target.location,
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 445) 			 CACHE_MODE_NORMAL, TASK_RELOAD, 1);
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 446) 		return DO_MOVE_DONE;
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 447) 	case TASK_RELOAD:
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 448) 		ses_goto(ses, cached->redirect, NULL, NULL,
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 449) 			 ses->reloadlevel, TASK_RELOAD, 1);
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 450) 		return DO_MOVE_DONE;
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 451) 	}
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 452) 
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 453) 	return DO_MOVE_DISPLAY;
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 454) }
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 455) 
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 456) static enum do_move
494d60ed src/session/task.c          (Laurent Monin                 2004-10-08 16:44:09 +0000 457) do_move(struct session *ses, struct download **download_p)
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 458) {
16c45c71 src/session/task.c          (Jonas Fonseca                 2004-04-03 14:13:47 +0000 459) 	struct cache_entry *cached;
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 460) 
494d60ed src/session/task.c          (Laurent Monin                 2004-10-08 16:44:09 +0000 461) 	assert(download_p && *download_p);
c8a2599d src/session/task.c          (Jonas Fonseca                 2004-04-01 01:09:40 +0000 462) 	assertm(ses->loading_uri, "no ses->loading_uri");
c92e00b6 src/session/task.c          (Jonas Fonseca                 2005-03-02 15:09:14 +0000 463) 	if_assert_failed return DO_MOVE_ABORT;
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 464) 
560e79c6 src/session/task.c          (Jonas Fonseca                 2004-04-01 02:48:53 +0000 465) 	if (ses->loading_uri->protocol == PROTOCOL_UNKNOWN)
c92e00b6 src/session/task.c          (Jonas Fonseca                 2005-03-02 15:09:14 +0000 466) 		return DO_MOVE_ABORT;
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 467) 
e950463c src/session/task.c          (Jonas Fonseca                 2004-06-08 14:46:21 +0000 468) 	/* Handling image map needs to scan the source of the loaded document
e950463c src/session/task.c          (Jonas Fonseca                 2004-06-08 14:46:21 +0000 469) 	 * so all of it has to be available. */
494d60ed src/session/task.c          (Laurent Monin                 2004-10-08 16:44:09 +0000 470) 	if (ses->task.type == TASK_IMGMAP && is_in_progress_state((*download_p)->state))
c92e00b6 src/session/task.c          (Jonas Fonseca                 2005-03-02 15:09:14 +0000 471) 		return DO_MOVE_ABORT;
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 472) 
494d60ed src/session/task.c          (Laurent Monin                 2004-10-08 16:44:09 +0000 473) 	cached = (*download_p)->cached;
c92e00b6 src/session/task.c          (Jonas Fonseca                 2005-03-02 15:09:14 +0000 474) 	if (!cached) return DO_MOVE_ABORT;
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 475) 
6facaf3c src/session/task.c          (Laurent Monin                 2005-03-02 16:06:31 +0000 476) 	if (cached->redirect && ses->redirect_cnt++ < MAX_REDIRECTS) {
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 477) 		enum do_move d = do_redirect(ses, download_p, cached);
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 478) 
a8611506 src/session/task.c          (Laurent Monin                 2005-03-02 15:59:55 +0000 479) 		if (d != DO_MOVE_DISPLAY) return d;
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 480) 	}
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 481) 
5a8468f9 src/session/task.c          (Laurent Monin                 2005-03-04 17:55:36 +0000 482) 	kill_timer(&ses->display_timer);
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 483) 
a3004c19 src/session/task.c          (Petr Baudis                   2003-12-06 21:58:15 +0000 484) 	switch (ses->task.type) {
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 485) 		case TASK_NONE:
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 486) 			break;
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 487) 		case TASK_FORWARD:
2f13593f src/session/task.c          (Laurent Monin                 2005-03-02 14:30:05 +0000 488) 			if (setup_download_handler(ses, &ses->loading, cached, 0)) {
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 489) 				free_task(ses);
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 490) 				reload(ses, CACHE_MODE_NORMAL);
c92e00b6 src/session/task.c          (Jonas Fonseca                 2005-03-02 15:09:14 +0000 491) 				return DO_MOVE_DONE;
54fe1673 src/session/session.c       (Laurent Monin                 2003-06-29 15:51:15 +0000 492) 			}
54fe1673 src/session/session.c       (Laurent Monin                 2003-06-29 15:51:15 +0000 493) 			break;
4241dc4e src/session/session.c       (Petr Baudis                   2003-07-21 10:39:03 +0000 494) 		case TASK_IMGMAP:
4241dc4e src/session/session.c       (Petr Baudis                   2003-07-21 10:39:03 +0000 495) 			ses_imgmap(ses);
4241dc4e src/session/session.c       (Petr Baudis                   2003-07-21 10:39:03 +0000 496) 			break;
be3b45fd src/session/session.c       (Petr Baudis                   2003-10-24 20:51:41 +0000 497) 		case TASK_HISTORY:
8fa47a84 src/session/session.c       (Petr Baudis                   2003-10-24 20:39:38 +0000 498) 			ses_history_move(ses);
4241dc4e src/session/session.c       (Petr Baudis                   2003-07-21 10:39:03 +0000 499) 			break;
4241dc4e src/session/session.c       (Petr Baudis                   2003-07-21 10:39:03 +0000 500) 		case TASK_RELOAD:
794997cd src/session/task.c          (Laurent Monin                 2005-03-02 16:37:50 +0000 501) 			ses->task.target.location = cur_loc(ses)->prev;
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 502) 			ses_history_move(ses);
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 503) 			ses_forward(ses, 0);
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 504) 			break;
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 505) 	}
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 506) 
494d60ed src/session/task.c          (Laurent Monin                 2004-10-08 16:44:09 +0000 507) 	if (is_in_progress_state((*download_p)->state)) {
1fe368fa src/session/task.c          (Jonas Fonseca                 2005-06-24 23:47:07 +0000 508) 		if (have_location(ses))
1fe368fa src/session/task.c          (Jonas Fonseca                 2005-06-24 23:47:07 +0000 509) 			*download_p = &cur_loc(ses)->download;
3324496b src/session/task.c          (Jonas Fonseca                 2006-02-03 10:44:28 +0100 510) 		move_download(&ses->loading, *download_p, PRI_MAIN);
1fe368fa src/session/task.c          (Jonas Fonseca                 2005-06-24 23:47:07 +0000 511) 	} else if (have_location(ses)) {
d63f285a src/session/session.c       (Jonas Fonseca                 2003-07-04 01:49:02 +0000 512) 		cur_loc(ses)->download.state = ses->loading.state;
5241c7e7 src/document/session.c      (Laurent Monin                 2002-05-08 15:48:05 +0000 513) 	}
5241c7e7 src/document/session.c      (Laurent Monin                 2002-05-08 15:48:05 +0000 514) 
05c9d5e1 src/session/session.c       (Jonas Fonseca                 2003-06-12 00:02:07 +0000 515) 	free_task(ses);
c92e00b6 src/session/task.c          (Jonas Fonseca                 2005-03-02 15:09:14 +0000 516) 	return DO_MOVE_DISPLAY;
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 517) }
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 518) 
67783f14 src/session/task.c          (Jonas Fonseca                 2005-04-27 21:53:14 +0000 519) static void
866d67a9 src/session/task.c          (Laurent Monin                 2004-10-08 16:32:51 +0000 520) loading_callback(struct download *download, struct session *ses)
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 521) {
32544f04 src/session/task.c          (Jonas Fonseca                 2005-03-02 15:11:00 +0000 522) 	enum do_move d;
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 523) 
5d782c8f src/session/task.c          (Petr Baudis                   2004-09-28 16:12:20 +0000 524) 	assertm(ses->task.type, "loading_callback: no ses->task");
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 525) 	if_assert_failed return;
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 526) 
866d67a9 src/session/task.c          (Laurent Monin                 2004-10-08 16:32:51 +0000 527) 	d = do_move(ses, &download);
866d67a9 src/session/task.c          (Laurent Monin                 2004-10-08 16:32:51 +0000 528) 	if (!download) return;
c92e00b6 src/session/task.c          (Jonas Fonseca                 2005-03-02 15:09:14 +0000 529) 	if (d == DO_MOVE_DONE) goto end;
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 530) 
c92e00b6 src/session/task.c          (Jonas Fonseca                 2005-03-02 15:09:14 +0000 531) 	if (d == DO_MOVE_DISPLAY) {
d35acab4 src/session/task.c          (Laurent Monin                 2005-03-05 21:11:03 +0000 532) 		download->callback = (download_callback_T *) doc_loading_callback;
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 533) 		display_timer(ses);
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 534) 	}
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 535) 
866d67a9 src/session/task.c          (Laurent Monin                 2004-10-08 16:32:51 +0000 536) 	if (is_in_result_state(download->state)) {
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 537) 		if (ses->task.type) free_task(ses);
c92e00b6 src/session/task.c          (Jonas Fonseca                 2005-03-02 15:09:14 +0000 538) 		if (d == DO_MOVE_DISPLAY) doc_loading_callback(download, ses);
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 539) 	}
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 540) 
866d67a9 src/session/task.c          (Laurent Monin                 2004-10-08 16:32:51 +0000 541) 	if (is_in_result_state(download->state) && download->state != S_OK) {
947c1730 src/session/task.c          (Laurent MONIN                 2006-10-11 14:44:39 +0200 542) 		print_error_dialog(ses, download->state,
3e5b4b7a src/session/task.c          (Laurent MONIN                 2006-10-13 15:08:52 +0200 543) 				   download->conn ? download->conn->uri : NULL,
3e5b4b7a src/session/task.c          (Laurent MONIN                 2006-10-13 15:08:52 +0200 544) 				   download->pri);
c92e00b6 src/session/task.c          (Jonas Fonseca                 2005-03-02 15:09:14 +0000 545) 		if (d == DO_MOVE_ABORT) reload(ses, CACHE_MODE_NORMAL);
aae80e06 session.c                   (Petr Baudis                   2001-10-27 21:43:43 +0000 546) 	}
faf725e0 src/session/session.c       (Laurent Monin                 2003-09-28 22:55:23 +0000 547) 
faf725e0 src/session/session.c       (Laurent Monin                 2003-09-28 22:55:23 +0000 548) end:
1b81c867 session.c                   (Petr Baudis                   2002-03-02 14:04:07 +0000 549) 	check_questions_queue(ses);
aae80e06 session.c                   (Petr Baudis                   2001-10-27 21:43:43 +0000 550) 	print_screen_status(ses);
aae80e06 session.c                   (Petr Baudis                   2001-10-27 21:43:43 +0000 551) }
aae80e06 session.c                   (Petr Baudis                   2001-10-27 21:43:43 +0000 552) 
b199926d src/session/task.c          (Petr Baudis                   2003-12-06 17:04:31 +0000 553) 
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 554) static void
2b43d762 src/session/task.c          (Jonas Fonseca                 2004-06-09 00:22:44 +0000 555) do_follow_url(struct session *ses, struct uri *uri, unsigned char *target,
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 556) 	      enum task_type task, enum cache_mode cache_mode, int do_referrer)
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 557) {
685560e7 src/session/task.c          (Jonas Fonseca                 2004-03-31 22:42:38 +0000 558) 	struct uri *referrer = NULL;
2351a364 src/session/task.c          (Jonas Fonseca                 2005-03-05 21:04:49 +0000 559) 	protocol_external_handler_T *external_handler;
e4d1ff51 src/session/task.c          (Jonas Fonseca                 2004-04-02 21:52:01 +0000 560) 
9504547d src/session/task.c          (Jonas Fonseca                 2004-04-11 15:32:22 +0000 561) 	if (!uri) {
588d9046 src/session/task.c          (Jonas Fonseca                 2005-04-06 17:29:05 +0000 562) 		print_error_dialog(ses, S_BAD_URL, uri, PRI_CANCEL);
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 563) 		return;
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 564) 	}
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 565) 
0e7f8ffe src/session/task.c          (Witold Filipczyk              2005-09-06 14:16:48 +0000 566) 	external_handler = get_protocol_external_handler(ses->tab->term, uri);
fb01b829 src/session/task.c          (Jonas Fonseca                 2004-04-04 04:28:01 +0000 567) 	if (external_handler) {
fb01b829 src/session/task.c          (Jonas Fonseca                 2004-04-04 04:28:01 +0000 568) 		external_handler(ses, uri);
fb01b829 src/session/task.c          (Jonas Fonseca                 2004-04-04 04:28:01 +0000 569) 		return;
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 570) 	}
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 571) 
35f30b60 src/session/session.c       (Jonas Fonseca                 2003-11-12 01:29:56 +0000 572) 	if (do_referrer) {
35f30b60 src/session/session.c       (Jonas Fonseca                 2003-11-12 01:29:56 +0000 573) 		struct document_view *doc_view = current_frame(ses);
35f30b60 src/session/session.c       (Jonas Fonseca                 2003-11-12 01:29:56 +0000 574) 
35f30b60 src/session/session.c       (Jonas Fonseca                 2003-11-12 01:29:56 +0000 575) 		if (doc_view && doc_view->document)
5e2b0baf src/session/task.c          (Jonas Fonseca                 2004-03-31 22:00:50 +0000 576) 			referrer = doc_view->document->uri;
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 577) 	}
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 578) 
4a0f38f5 src/session/task.c          (Laurent Monin                 2004-10-08 13:00:07 +0000 579) 	if (target && !strcmp(target, "_blank")) {
4a0f38f5 src/session/task.c          (Laurent Monin                 2004-10-08 13:00:07 +0000 580) 		int mode = get_opt_int("document.browse.links.target_blank");
4a0f38f5 src/session/task.c          (Laurent Monin                 2004-10-08 13:00:07 +0000 581) 
bbe09fc9 src/session/task.c          (Jonas Fonseca                 2005-07-21 14:32:59 +0000 582) 		if (mode == 3
bbe09fc9 src/session/task.c          (Jonas Fonseca                 2005-07-21 14:32:59 +0000 583) 		    && !get_cmd_opt_bool("anonymous")
bbe09fc9 src/session/task.c          (Jonas Fonseca                 2005-07-21 14:32:59 +0000 584) 		    && can_open_in_new(ses->tab->term)
bbe09fc9 src/session/task.c          (Jonas Fonseca                 2005-07-21 14:32:59 +0000 585) 		    && !get_cmd_opt_bool("no-connect")
bbe09fc9 src/session/task.c          (Jonas Fonseca                 2005-07-21 14:32:59 +0000 586) 		    && !get_cmd_opt_bool("no-home")) {
bbe09fc9 src/session/task.c          (Jonas Fonseca                 2005-07-21 14:32:59 +0000 587) 			enum term_env_type env = ses->tab->term->environment;
bbe09fc9 src/session/task.c          (Jonas Fonseca                 2005-07-21 14:32:59 +0000 588) 
bbe09fc9 src/session/task.c          (Jonas Fonseca                 2005-07-21 14:32:59 +0000 589) 			open_uri_in_new_window(ses, uri, referrer, env,
bbe09fc9 src/session/task.c          (Jonas Fonseca                 2005-07-21 14:32:59 +0000 590) 					       cache_mode, task);
bbe09fc9 src/session/task.c          (Jonas Fonseca                 2005-07-21 14:32:59 +0000 591) 			return;
bbe09fc9 src/session/task.c          (Jonas Fonseca                 2005-07-21 14:32:59 +0000 592) 		}
bbe09fc9 src/session/task.c          (Jonas Fonseca                 2005-07-21 14:32:59 +0000 593) 
4a0f38f5 src/session/task.c          (Laurent Monin                 2004-10-08 13:00:07 +0000 594) 		if (mode > 0) {
4a0f38f5 src/session/task.c          (Laurent Monin                 2004-10-08 13:00:07 +0000 595) 			struct session *new_ses;
4a0f38f5 src/session/task.c          (Laurent Monin                 2004-10-08 13:00:07 +0000 596) 
4a0f38f5 src/session/task.c          (Laurent Monin                 2004-10-08 13:00:07 +0000 597) 			new_ses = init_session(ses, ses->tab->term, uri, (mode == 2));
4a0f38f5 src/session/task.c          (Laurent Monin                 2004-10-08 13:00:07 +0000 598) 			if (new_ses) ses = new_ses;
4a0f38f5 src/session/task.c          (Laurent Monin                 2004-10-08 13:00:07 +0000 599) 		}
4a0f38f5 src/session/task.c          (Laurent Monin                 2004-10-08 13:00:07 +0000 600) 	}
4a0f38f5 src/session/task.c          (Laurent Monin                 2004-10-08 13:00:07 +0000 601) 
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 602) 	ses->reloadlevel = cache_mode;
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 603) 
b35fc8ea src/session/task.c          (Petr Baudis                   2003-12-06 16:44:24 +0000 604) 	if (ses->task.type == task) {
21ddf19f src/session/task.c          (Jonas Fonseca                 2004-06-08 14:15:27 +0000 605) 		if (compare_uri(ses->loading_uri, uri, 0)) {
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 606) 			/* We're already loading the URL. */
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 607) 			return;
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 608) 		}
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 609) 	}
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 610) 
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 611) 	abort_loading(ses, 0);
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 612) 
bc76076b src/session/task.c          (Jonas Fonseca                 2004-03-30 23:05:25 +0000 613) 	set_session_referrer(ses, referrer);
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 614) 
5f734c3a src/session/task.c          (Jonas Fonseca                 2004-06-08 13:49:09 +0000 615) 	ses_goto(ses, uri, target, NULL, cache_mode, task, 0);
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 616) }
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 617) 
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 618) static void
2b43d762 src/session/task.c          (Jonas Fonseca                 2004-06-09 00:22:44 +0000 619) follow_url(struct session *ses, struct uri *uri, unsigned char *target,
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 620) 	   enum task_type task, enum cache_mode cache_mode, int referrer)
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 621) {
850c7450 src/session/task.c          (Jonas Fonseca                 2004-04-29 23:32:18 +0000 622) #ifdef CONFIG_SCRIPTING
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 623) 	static int follow_url_event_id = EVENT_NONE;
07f8b1e9 src/session/task.c          (Petr Baudis                   2004-09-14 20:24:42 +0000 624) 	unsigned char *uristring = uri ? get_uri_string(uri, URI_BASE | URI_FRAGMENT) : NULL;
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 625) 
07f8b1e9 src/session/task.c          (Petr Baudis                   2004-09-14 20:24:42 +0000 626) 	if (!uristring) {
07f8b1e9 src/session/task.c          (Petr Baudis                   2004-09-14 20:24:42 +0000 627) 		do_follow_url(ses, uri, target, task, cache_mode, referrer);
07f8b1e9 src/session/task.c          (Petr Baudis                   2004-09-14 20:24:42 +0000 628) 		return;
07f8b1e9 src/session/task.c          (Petr Baudis                   2004-09-14 20:24:42 +0000 629) 	}
677f93bf src/session/task.c          (Miciah Dashiel Butler Masters 2003-12-13 05:22:47 +0000 630) 
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 631) 	set_event_id(follow_url_event_id, "follow-url");
2b43d762 src/session/task.c          (Jonas Fonseca                 2004-06-09 00:22:44 +0000 632) 	trigger_event(follow_url_event_id, &uristring, ses);
2b43d762 src/session/task.c          (Jonas Fonseca                 2004-06-09 00:22:44 +0000 633) 
2b43d762 src/session/task.c          (Jonas Fonseca                 2004-06-09 00:22:44 +0000 634) 	if (!uristring || !*uristring) {
2b43d762 src/session/task.c          (Jonas Fonseca                 2004-06-09 00:22:44 +0000 635) 		mem_free_if(uristring);
2b43d762 src/session/task.c          (Jonas Fonseca                 2004-06-09 00:22:44 +0000 636) 		return;
2b43d762 src/session/task.c          (Jonas Fonseca                 2004-06-09 00:22:44 +0000 637) 	}
2b43d762 src/session/task.c          (Jonas Fonseca                 2004-06-09 00:22:44 +0000 638) 
2b43d762 src/session/task.c          (Jonas Fonseca                 2004-06-09 00:22:44 +0000 639) 	/* FIXME: Compare if uristring and struri(uri) are equal */
8a55b652 src/session/task.c          (Jonas Fonseca                 2004-06-11 12:36:57 +0000 640) 	/* FIXME: When uri->post will no longer be an encoded string (but
ed6482ab src/session/task.c          (Laurent Monin                 2005-03-02 15:17:54 +0000 641) 	 * hopefully some refcounted object) we will have to assign the post
8a55b652 src/session/task.c          (Jonas Fonseca                 2004-06-11 12:36:57 +0000 642) 	 * data object to the translated URI. */
2b43d762 src/session/task.c          (Jonas Fonseca                 2004-06-09 00:22:44 +0000 643) 	uri = get_translated_uri(uristring, ses->tab->term->cwd);
2b43d762 src/session/task.c          (Jonas Fonseca                 2004-06-09 00:22:44 +0000 644) 	mem_free(uristring);
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 645) #endif
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 646) 
2b43d762 src/session/task.c          (Jonas Fonseca                 2004-06-09 00:22:44 +0000 647) 	do_follow_url(ses, uri, target, task, cache_mode, referrer);
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 648) 
850c7450 src/session/task.c          (Jonas Fonseca                 2004-04-29 23:32:18 +0000 649) #ifdef CONFIG_SCRIPTING
2b43d762 src/session/task.c          (Jonas Fonseca                 2004-06-09 00:22:44 +0000 650) 	if (uri) done_uri(uri);
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 651) #endif
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 652) }
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 653) 
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 654) void
fe6654d1 src/session/task.c          (Jonas Fonseca                 2004-06-09 21:13:18 +0000 655) goto_uri(struct session *ses, struct uri *uri)
fe6654d1 src/session/task.c          (Jonas Fonseca                 2004-06-09 21:13:18 +0000 656) {
fe6654d1 src/session/task.c          (Jonas Fonseca                 2004-06-09 21:13:18 +0000 657) 	follow_url(ses, uri, NULL, TASK_FORWARD, CACHE_MODE_NORMAL, 0);
fe6654d1 src/session/task.c          (Jonas Fonseca                 2004-06-09 21:13:18 +0000 658) }
fe6654d1 src/session/task.c          (Jonas Fonseca                 2004-06-09 21:13:18 +0000 659) 
fe6654d1 src/session/task.c          (Jonas Fonseca                 2004-06-09 21:13:18 +0000 660) void
fe6654d1 src/session/task.c          (Jonas Fonseca                 2004-06-09 21:13:18 +0000 661) goto_uri_frame(struct session *ses, struct uri *uri,
41d436af src/session/task.c          (Jonas Fonseca                 2004-05-25 00:55:25 +0000 662) 	       unsigned char *target, enum cache_mode cache_mode)
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 663) {
2b43d762 src/session/task.c          (Jonas Fonseca                 2004-06-09 00:22:44 +0000 664) 	follow_url(ses, uri, target, TASK_FORWARD, cache_mode, 1);
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 665) }
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 666) 
1f68492d src/session/task.c          (Miciah Dashiel Butler Masters 2006-01-16 19:18:33 +0000 667) void
d8592e4f src/ecmascript/see/window.c (witekfl                       2006-01-10 19:17:29 +0100 668) delayed_goto_uri_frame(void *data)
d8592e4f src/ecmascript/see/window.c (witekfl                       2006-01-10 19:17:29 +0100 669) {
d8592e4f src/ecmascript/see/window.c (witekfl                       2006-01-10 19:17:29 +0100 670) 	struct delayed_open *deo = data;
6cd9a11f src/ecmascript/see/window.c (                              2006-01-16 14:32:13 +0100 671) 	struct frame *frame;
d8592e4f src/ecmascript/see/window.c (witekfl                       2006-01-10 19:17:29 +0100 672) 
d8592e4f src/ecmascript/see/window.c (witekfl                       2006-01-10 19:17:29 +0100 673) 	assert(deo);
6cd9a11f src/ecmascript/see/window.c (                              2006-01-16 14:32:13 +0100 674) 	frame = ses_find_frame(deo->ses, deo->target);
6cd9a11f src/ecmascript/see/window.c (                              2006-01-16 14:32:13 +0100 675) 	if (frame)
6cd9a11f src/ecmascript/see/window.c (                              2006-01-16 14:32:13 +0100 676) 		goto_uri_frame(deo->ses, deo->uri, frame->name, CACHE_MODE_NORMAL);
1d65718a src/session/task.c          (witekfl                       2006-01-18 20:16:17 +0100 677) 	else {
ea2d7a33 src/session/task.c          (witekfl                       2006-01-25 20:19:55 +0100 678) 		goto_uri_frame(deo->ses, deo->uri, NULL, CACHE_MODE_NORMAL);
1d65718a src/session/task.c          (witekfl                       2006-01-18 20:16:17 +0100 679) 	}
1f68492d src/session/task.c          (Miciah Dashiel Butler Masters 2006-01-16 19:18:33 +0000 680) 	done_uri(deo->uri);
1f68492d src/session/task.c          (Miciah Dashiel Butler Masters 2006-01-16 19:18:33 +0000 681) 	mem_free(deo->target);
1f68492d src/session/task.c          (Miciah Dashiel Butler Masters 2006-01-16 19:18:33 +0000 682) 	mem_free(deo);
1f68492d src/session/task.c          (Miciah Dashiel Butler Masters 2006-01-16 19:18:33 +0000 683) }
1f68492d src/session/task.c          (Miciah Dashiel Butler Masters 2006-01-16 19:18:33 +0000 684) 
2dff3c06 src/session/task.c          (Laurent Monin                 2005-03-05 20:31:10 +0000 685) /* menu_func_T */
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 686) void
5dfaa80f src/session/task.c          (Laurent Monin                 2004-11-22 13:27:41 +0000 687) map_selected(struct terminal *term, void *ld_, void *ses_)
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 688) {
5dfaa80f src/session/task.c          (Laurent Monin                 2004-11-22 13:27:41 +0000 689) 	struct link_def *ld = ld_;
5dfaa80f src/session/task.c          (Laurent Monin                 2004-11-22 13:27:41 +0000 690) 	struct session *ses = ses_;
c3d1dd83 src/session/task.c          (Jonas Fonseca                 2004-06-07 23:38:54 +0000 691) 	struct uri *uri = get_uri(ld->link, 0);
87dbd8d2 src/session/task.c          (Jonas Fonseca                 2004-05-25 01:00:02 +0000 692) 
fe6654d1 src/session/task.c          (Jonas Fonseca                 2004-06-09 21:13:18 +0000 693) 	goto_uri_frame(ses, uri, ld->target, CACHE_MODE_NORMAL);
2b43d762 src/session/task.c          (Jonas Fonseca                 2004-06-09 00:22:44 +0000 694) 	if (uri) done_uri(uri);
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 695) }
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 696) 
fe6654d1 src/session/task.c          (Jonas Fonseca                 2004-06-09 21:13:18 +0000 697) 
a812c977 src/session/session.c       (Laurent Monin                 2003-06-05 15:28:02 +0000 698) void
a812c977 src/session/session.c       (Laurent Monin                 2003-06-05 15:28:02 +0000 699) goto_url(struct session *ses, unsigned char *url)
aae80e06 session.c                   (Petr Baudis                   2001-10-27 21:43:43 +0000 700) {
2b43d762 src/session/task.c          (Jonas Fonseca                 2004-06-09 00:22:44 +0000 701) 	struct uri *uri = get_uri(url, 0);
2b43d762 src/session/task.c          (Jonas Fonseca                 2004-06-09 00:22:44 +0000 702) 
fe6654d1 src/session/task.c          (Jonas Fonseca                 2004-06-09 21:13:18 +0000 703) 	goto_uri(ses, uri);
2b43d762 src/session/task.c          (Jonas Fonseca                 2004-06-09 00:22:44 +0000 704) 	if (uri) done_uri(uri);
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 705) }
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 706) 
3689f652 src/session/task.c          (Jonas Fonseca                 2004-06-08 23:05:21 +0000 707) struct uri *
0df24f75 src/session/task.c          (Petr Baudis                   2004-06-22 23:11:18 +0000 708) get_hooked_uri(unsigned char *uristring, struct session *ses, unsigned char *cwd)
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 709) {
95c90bbf src/session/task.c          (Laurent Monin                 2004-06-23 07:38:26 +0000 710) 	struct uri *uri;
95c90bbf src/session/task.c          (Laurent Monin                 2004-06-23 07:38:26 +0000 711) 
5df24acb src/session/task.c          (Jonas Fonseca                 2004-05-27 12:19:56 +0000 712) #if defined(CONFIG_SCRIPTING) || defined(CONFIG_URI_REWRITE)
5df24acb src/session/task.c          (Jonas Fonseca                 2004-05-27 12:19:56 +0000 713) 	static int goto_url_event_id = EVENT_NONE;
5df24acb src/session/task.c          (Jonas Fonseca                 2004-05-27 12:19:56 +0000 714) 
a4de2598 src/session/task.c          (Jonas Fonseca                 2004-06-08 16:51:50 +0000 715) 	uristring = stracpy(uristring);
a4de2598 src/session/task.c          (Jonas Fonseca                 2004-06-08 16:51:50 +0000 716) 	if (!uristring) return NULL;
e9cd1fa0 src/session/task.c          (Jonas Fonseca                 2004-06-07 15:58:07 +0000 717) 
5df24acb src/session/task.c          (Jonas Fonseca                 2004-05-27 12:19:56 +0000 718) 	set_event_id(goto_url_event_id, "goto-url");
0df24f75 src/session/task.c          (Petr Baudis                   2004-06-22 23:11:18 +0000 719) 	trigger_event(goto_url_event_id, &uristring, ses);
a4de2598 src/session/task.c          (Jonas Fonseca                 2004-06-08 16:51:50 +0000 720) 	if (!uristring) return NULL;
5df24acb src/session/task.c          (Jonas Fonseca                 2004-05-27 12:19:56 +0000 721) #endif
5df24acb src/session/task.c          (Jonas Fonseca                 2004-05-27 12:19:56 +0000 722) 
3248c86b src/session/task.c          (Jonas Fonseca                 2004-06-08 17:01:44 +0000 723) 	uri = *uristring ? get_translated_uri(uristring, cwd) : NULL;
5df24acb src/session/task.c          (Jonas Fonseca                 2004-05-27 12:19:56 +0000 724) 
5df24acb src/session/task.c          (Jonas Fonseca                 2004-05-27 12:19:56 +0000 725) #if defined(CONFIG_SCRIPTING) || defined(CONFIG_URI_REWRITE)
a4de2598 src/session/task.c          (Jonas Fonseca                 2004-06-08 16:51:50 +0000 726) 	mem_free(uristring);
5df24acb src/session/task.c          (Jonas Fonseca                 2004-05-27 12:19:56 +0000 727) #endif
a4de2598 src/session/task.c          (Jonas Fonseca                 2004-06-08 16:51:50 +0000 728) 	return uri;
aae80e06 session.c                   (Petr Baudis                   2001-10-27 21:43:43 +0000 729) }
aae80e06 session.c                   (Petr Baudis                   2001-10-27 21:43:43 +0000 730) 
82e5bffd src/dialogs/menu.c          (Petr Baudis                   2002-04-02 21:50:37 +0000 731) void
82e5bffd src/dialogs/menu.c          (Petr Baudis                   2002-04-02 21:50:37 +0000 732) goto_url_with_hook(struct session *ses, unsigned char *url)
a3dfc611 menu.c                      (Petr Baudis                   2001-10-27 21:48:39 +0000 733) {
f076e9b4 src/session/task.c          (Jonas Fonseca                 2004-06-10 14:54:29 +0000 734) 	unsigned char *cwd = ses->tab->term->cwd;
0df24f75 src/session/task.c          (Petr Baudis                   2004-06-22 23:11:18 +0000 735) 	struct uri *uri;
87f2055a src/session/task.c          (Jonas Fonseca                 2004-06-09 20:49:22 +0000 736) 
87f2055a src/session/task.c          (Jonas Fonseca                 2004-06-09 20:49:22 +0000 737) 	/* Bail out if passed empty string from goto-url dialog */
87f2055a src/session/task.c          (Jonas Fonseca                 2004-06-09 20:49:22 +0000 738) 	if (!*url) return;
a4de2598 src/session/task.c          (Jonas Fonseca                 2004-06-08 16:51:50 +0000 739) 
0df24f75 src/session/task.c          (Petr Baudis                   2004-06-22 23:11:18 +0000 740) 	uri = get_hooked_uri(url, ses, cwd);
470da906 src/session/task.c          (Miciah Dashiel Butler Masters 2005-12-30 03:04:04 +0000 741) 	if (!uri) return;
470da906 src/session/task.c          (Miciah Dashiel Butler Masters 2005-12-30 03:04:04 +0000 742) 
fe6654d1 src/session/task.c          (Jonas Fonseca                 2004-06-09 21:13:18 +0000 743) 	goto_uri(ses, uri);
470da906 src/session/task.c          (Miciah Dashiel Butler Masters 2005-12-30 03:04:04 +0000 744) 
470da906 src/session/task.c          (Miciah Dashiel Butler Masters 2005-12-30 03:04:04 +0000 745) 	done_uri(uri);
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 746) }
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 747) 
cfcf43b9 src/session/task.c          (Jonas Fonseca                 2004-05-25 07:14:50 +0000 748) int
cfcf43b9 src/session/task.c          (Jonas Fonseca                 2004-05-25 07:14:50 +0000 749) goto_url_home(struct session *ses)
416b1c6f src/session/session.c       (Laurent Monin                 2004-01-08 09:53:06 +0000 750) {
2bbc825a src/session/session.c       (Jonas Fonseca                 2004-01-08 14:57:56 +0000 751) 	unsigned char *homepage = get_opt_str("ui.sessions.homepage");
416b1c6f src/session/session.c       (Laurent Monin                 2004-01-08 09:53:06 +0000 752) 
2bbc825a src/session/session.c       (Jonas Fonseca                 2004-01-08 14:57:56 +0000 753) 	if (!*homepage) homepage = getenv("WWW_HOME");
2bbc825a src/session/session.c       (Jonas Fonseca                 2004-01-08 14:57:56 +0000 754) 	if (!homepage || !*homepage) homepage = WWW_HOME_URL;
416b1c6f src/session/session.c       (Laurent Monin                 2004-01-08 09:53:06 +0000 755) 
cfcf43b9 src/session/task.c          (Jonas Fonseca                 2004-05-25 07:14:50 +0000 756) 	if (!homepage || !*homepage) return 0;
cfcf43b9 src/session/task.c          (Jonas Fonseca                 2004-05-25 07:14:50 +0000 757) 
cfcf43b9 src/session/task.c          (Jonas Fonseca                 2004-05-25 07:14:50 +0000 758) 	goto_url_with_hook(ses, homepage);
cfcf43b9 src/session/task.c          (Jonas Fonseca                 2004-05-25 07:14:50 +0000 759) 	return 1;
cfcf43b9 src/session/task.c          (Jonas Fonseca                 2004-05-25 07:14:50 +0000 760) }
cfcf43b9 src/session/task.c          (Jonas Fonseca                 2004-05-25 07:14:50 +0000 761) 
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 762) /* TODO: Should there be goto_imgmap_reload() ? */
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 763) 
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 764) void
f8a1452a src/session/task.c          (Jonas Fonseca                 2004-05-25 00:26:32 +0000 765) goto_imgmap(struct session *ses, struct uri *uri, unsigned char *target)
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 766) {
2b43d762 src/session/task.c          (Jonas Fonseca                 2004-06-09 00:22:44 +0000 767) 	follow_url(ses, uri, target, TASK_IMGMAP, CACHE_MODE_NORMAL, 1);
aaba149d src/session/task.c          (Jonas Fonseca                 2003-12-06 02:56:01 +0000 768) }

