diff options
author | Fumitoshi UKAI <ukai@debian.or.jp> | 2002-11-06 15:03:25 +0000 |
---|---|---|
committer | Fumitoshi UKAI <ukai@debian.or.jp> | 2002-11-06 15:03:25 +0000 |
commit | bcb1de20e2eaad2de66d59ff4b50e6b96201f690 (patch) | |
tree | 124e7940dd0e2ff4f270de1ed81eec545c051124 | |
parent | [w3m-dev 03380] fix configure (diff) | |
download | w3m-bcb1de20e2eaad2de66d59ff4b50e6b96201f690.tar.gz w3m-bcb1de20e2eaad2de66d59ff4b50e6b96201f690.zip |
[w3m-dev 03382] Interrupt in no_proxy_check()
* url.c (check_no_proxy): SIGINT trap by KeyAbort
From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
Diffstat (limited to '')
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | url.c | 32 |
2 files changed, 31 insertions, 8 deletions
@@ -1,3 +1,8 @@ +2002-11-07 Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp> + + * [w3m-dev 03382] Interrupt in no_proxy_check() + * url.c (check_no_proxy): SIGINT trap by KeyAbort + 2002-11-06 Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp> * [w3m-dev 03380] fix configure @@ -4360,4 +4365,4 @@ a * [w3m-dev 03276] compile error on EWS4800 * release-0-2-1 * import w3m-0.2.1 -$Id: ChangeLog,v 1.481 2002/11/06 14:58:02 ukai Exp $ +$Id: ChangeLog,v 1.482 2002/11/06 15:03:25 ukai Exp $ @@ -1,4 +1,4 @@ -/* $Id: url.c,v 1.54 2002/11/04 08:47:38 ukai Exp $ */ +/* $Id: url.c,v 1.55 2002/11/06 15:03:26 ukai Exp $ */ #include "fm.h" #include <sys/types.h> #include <sys/socket.h> @@ -1943,6 +1943,8 @@ int check_no_proxy(char *domain) { TextListItem *tl; + volatile int ret = 0; + MySignalHandler(*volatile trap) (SIGNAL_ARG) = NULL; if (NO_proxy_domains == NULL || NO_proxy_domains->nitem == 0 || domain == NULL) @@ -1957,6 +1959,13 @@ check_no_proxy(char *domain) /* * to check noproxy by network addr */ + if (SETJMP(AbortLoading) != 0) { + ret = 0; + goto end; + } + trap = signal(SIGINT, KeyAbort); + if (fmInitialized) + term_cbreak(); { #ifndef INET6 struct hostent *he; @@ -1965,8 +1974,10 @@ check_no_proxy(char *domain) char addr[4 * 16], buf[5]; he = gethostbyname(domain); - if (!he) - return (0); + if (!he) { + ret = 0; + goto end; + } for (h_addr_list = (unsigned char **)he->h_addr_list; *h_addr_list; h_addr_list++) { sprintf(addr, "%d", h_addr_list[0][0]); @@ -1975,8 +1986,10 @@ check_no_proxy(char *domain) strcat(addr, buf); } for (tl = NO_proxy_domains->first; tl != NULL; tl = tl->next) { - if (strncmp(tl->ptr, addr, strlen(tl->ptr)) == 0) - return (1); + if (strncmp(tl->ptr, addr, strlen(tl->ptr)) == 0) { + ret = 1; + goto end; + } } } #else /* INET6 */ @@ -2016,7 +2029,8 @@ check_no_proxy(char *domain) for (tl = NO_proxy_domains->first; tl != NULL; tl = tl->next) { if (strncmp(tl->ptr, addr, strlen(tl->ptr)) == 0) { freeaddrinfo(res0); - return 1; + ret = 1; + goto end; } } } @@ -2027,7 +2041,11 @@ check_no_proxy(char *domain) } #endif /* INET6 */ } - return 0; + end: + if (fmInitialized) + term_raw(); + signal(SIGINT, trap); + return ret; } char * |