## DP: privoxy_CVS_20030523_ipv6_5.patch.bz2 from
## DP: ftp://ftp.deepspace6.net/pub/ds6/sources/privoxy/privoxy_CVS_20030523_ipv6_5.patch.bz2
## DP: adapted to the 3.0 branch of privoxy by Roland Rosenfeld
+## DP: adapted to 3.0.4 by higuita, but i'm no programmer, so i hope i
+## DP: didnt broke anything :)
@DPATCH@
diff -urNad privoxy~/GNUmakefile.in privoxy/GNUmakefile.in
* Based on the Internet Junkbuster originally written
* by and Copyright (C) 1997 Anonymous Coders and
* Junkbusters Corporation. http://www.junkbusters.com
-@@ -2167,7 +2170,6 @@
+@@ -2221,7 +2224,6 @@
*********************************************************************/
struct map *default_exports(const struct client_state *csp, const char *caller)
{
jb_err err;
struct map * exports;
int local_help_exists = 0;
-@@ -2199,8 +2201,7 @@
+@@ -2257,8 +2259,7 @@
if (!err) err = map_block_killer(exports, "can-toggle");
#endif
diff -urNad privoxy~/errlog.c privoxy/errlog.c
--- privoxy~/errlog.c
+++ privoxy/errlog.c
-@@ -679,6 +679,13 @@
+@@ -739,6 +739,13 @@
break;
case 'E':
/* Non-standard: Print error code from errno */
diff -urNad privoxy~/filters.c privoxy/filters.c
--- privoxy~/filters.c
+++ privoxy/filters.c
-@@ -14,6 +14,9 @@
- * Copyright : Written by and Copyright (C) 2001 the SourceForge
+@@ -15,6 +15,9 @@
+ * Copyright : Written by and Copyright (C) 2001, 2004 the SourceForge
* Privoxy team. http://www.privoxy.org/
*
+ * Modified by Lionel Elie Mamane <lionel@mamane.lu>
* Based on the Internet Junkbuster originally written
* by and Copyright (C) 1997 Anonymous Coders and
* Junkbusters Corporation. http://www.junkbusters.com
-@@ -427,6 +430,9 @@
+@@ -465,6 +468,9 @@
#include <ctype.h>
#include <string.h>
#include <assert.h>
#ifndef _WIN32
#ifndef __OS2__
-@@ -461,17 +467,119 @@
+@@ -499,17 +505,119 @@
const char filters_h_rcs[] = FILTERS_H_VERSION;
/*********************************************************************
*
* Function : block_acl
-@@ -501,7 +609,7 @@
+@@ -539,7 +647,7 @@
/* search the list */
while (acl != NULL)
{
{
if (dst == NULL)
{
-@@ -511,8 +619,8 @@
+@@ -549,8 +657,8 @@
return(0);
}
}
{
if (acl->action == ACL_PERMIT)
{
-@@ -531,81 +639,249 @@
+@@ -569,81 +677,249 @@
}
/*********************************************************************
*
-@@ -1048,7 +1324,7 @@
- *********************************************************************/
- struct http_response *redirect_url(struct client_state *csp)
- {
-- char *p, *q;
-+ const char *p, *q;
- struct http_response *rsp;
-
- p = q = csp->http->path;
diff -urNad privoxy~/filters.h privoxy/filters.h
--- privoxy~/filters.h
+++ privoxy/filters.h
@@ -15,6 +15,9 @@
- * Copyright : Written by and Copyright (C) 2001 the SourceForge
+ * Copyright : Written by and Copyright (C) 2001, 2004 the SourceForge
* Privoxy team. http://www.privoxy.org/
*
+ * Modified by Lionel Elie Mamane <lionel@mamane.lu>
* Based on the Internet Junkbuster originally written
* by and Copyright (C) 1997 Anonymous Coders and
* Junkbusters Corporation. http://www.junkbusters.com
-@@ -221,7 +224,11 @@
+@@ -234,7 +237,11 @@
*/
#ifdef FEATURE_ACL
extern int block_acl(struct access_control_addr *dst, struct client_state *csp);
* Based on the Internet Junkbuster originally written
* by and Copyright (C) 1997 Anonymous Coders and
* Junkbusters Corporation. http://www.junkbusters.com
-@@ -199,12 +202,14 @@
+@@ -203,12 +206,14 @@
* Returns : JB_INVALID_SOCKET => failure, else it is the socket file descriptor.
*
*********************************************************************/
/* Figure out if we need to connect to the web server or a HTTP proxy. */
if (fwd->forward_host)
-@@ -212,19 +217,23 @@
+@@ -216,19 +221,23 @@
/* HTTP proxy */
dest_host = fwd->forward_host;
dest_port = fwd->forward_port;
case SOCKS_4:
case SOCKS_4A:
-@@ -258,74 +267,19 @@
+@@ -262,74 +271,19 @@
* Returns : JB_INVALID_SOCKET => failure, else a socket file descriptor.
*
*********************************************************************/
c->vn = 4;
c->cd = 1;
c->dstport[0] = (target_port >> 8 ) & 0xff;
-@@ -336,7 +290,7 @@
+@@ -340,7 +294,7 @@
c->dstip[3] = (web_server_addr ) & 0xff;
/* pass the request to the socks server */
if (sfd == JB_INVALID_SOCKET)
{
-@@ -391,6 +345,92 @@
+@@ -395,6 +349,92 @@
}
* Based on the Internet Junkbuster originally written
* by and Copyright (C) 1997 Anonymous Coders and
* Junkbusters Corporation. http://www.junkbusters.com
-@@ -258,6 +262,7 @@
+@@ -275,6 +279,7 @@
#include "jbsockets.h"
#include "filters.h"
#include "errlog.h"
const char jbsockets_h_rcs[] = JBSOCKETS_H_VERSION;
-@@ -270,141 +275,194 @@
+@@ -287,141 +292,194 @@
* that this is allowed according to ACL.
*
* Parameters :
}
- }
+#endif /* !defined(_WIN32) && !defined(__BEOS__) && !defined(AMIGA) && !defined(__OS2__) */
-+
+
+ {
+ fd_set wfds;
+ struct timeval tv[1];
+ /* wait for connection to complete */
+ FD_ZERO(&wfds);
+ FD_SET(fd, &wfds);
-
++
+ tv->tv_sec = 30;
+ tv->tv_usec = 0;
+
- return(JB_INVALID_SOCKET);
+ errno = EINVAL;
+ return fd;
- }
-- return(fd);
-
++ }
++
+ for(addrs_to_try=addrs;
+ !is_nil_addr_list(addrs_to_try);
+ addrs_to_try = tail_addr_list(addrs_to_try))
+ fd = connect_to_one_ip(&addr, addrlen, host, portnum, csp);
+ if (fd != JB_INVALID_SOCKET)
+ break;
-+ }
-+
+ }
+- return(fd);
+
+ if (fd == JB_INVALID_SOCKET)
+ {
+ csp->http->host_ip_addr_str = strdup("unknown");
}
-@@ -544,55 +602,30 @@
+@@ -561,55 +619,30 @@
/*********************************************************************
*
#ifdef _WIN32
if (fd == JB_INVALID_SOCKET)
-@@ -618,8 +651,17 @@
+@@ -635,8 +668,17 @@
*/
setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char *)&one, sizeof(one));
#endif /* ndef _WIN32 */
{
#ifdef _WIN32
errno = WSAGetLastError();
-@@ -638,7 +680,7 @@
+@@ -655,7 +697,7 @@
}
}
{
if (errno != EINTR)
{
-@@ -646,7 +688,11 @@
+@@ -663,7 +705,11 @@
}
}
return 0;
}
-@@ -654,6 +700,91 @@
+@@ -671,6 +717,91 @@
/*********************************************************************
*
* Function : accept_connection
*
* Description : Accepts a connection on a socket. Socket must have
-@@ -670,8 +801,7 @@
+@@ -687,8 +818,7 @@
*********************************************************************/
int accept_connection(struct client_state * csp, jb_socket fd)
{
jb_socket afd;
#if defined(_WIN32) || defined(__OS2__) || defined(__APPLE_CC__) || defined(AMIGA)
/* Wierdness - fix a warning. */
-@@ -679,15 +809,7 @@
+@@ -696,15 +826,7 @@
#else
socklen_t c_length, s_length;
#endif
c_length = s_length = sizeof(client);
-@@ -707,6 +829,12 @@
+@@ -724,6 +846,12 @@
return 0;
}
#endif
/*
* Determine the IP-Adress that the client used to reach us
-@@ -714,49 +842,50 @@
+@@ -731,49 +859,50 @@
*/
if (!getsockname(afd, (struct sockaddr *) &server, &s_length))
{
+ log_error(LOG_LEVEL_ERROR, "accept: Could not get my own hostname because %E");
+ strncpy(hostname,"unknown host",NI_MAXHOST);
}
--#elif defined(OSX_DARWIN)
+-#elif defined(OSX_DARWIN) || defined(__OpenBSD__)
- pthread_mutex_lock(&gethostbyaddr_mutex);
- host = gethostbyaddr((const char *)&server.sin_addr,
- sizeof(server.sin_addr), AF_INET);
return 1;
-@@ -767,90 +896,41 @@
+@@ -784,108 +913,42 @@
*
* Function : resolve_hostname_to_ip
*
*
*********************************************************************/
-unsigned long resolve_hostname_to_ip(const char *host)
-+addr_list *resolve_hostname_to_ip(const char *host, const char *port, int pf)
- {
+-{
- struct sockaddr_in inaddr;
- struct hostent *hostp;
+- unsigned int dns_retries = 0;
-#if defined(HAVE_GETHOSTBYNAME_R_6_ARGS) || defined(HAVE_GETHOSTBYNAME_R_5_ARGS) || defined(HAVE_GETHOSTBYNAME_R_3_ARGS)
- struct hostent result;
-#if defined(HAVE_GETHOSTBYNAME_R_6_ARGS) || defined(HAVE_GETHOSTBYNAME_R_5_ARGS)
- }
-
- memset((char *) &inaddr, 0, sizeof inaddr);
-+ /* TODO
-+ * Do all supported platforms have "getaddrinfo"?
-+ */
-+
-+ struct addrinfo hints, *res0;
-+ int result;
-+ memset(&hints, 0, sizeof(hints));
-+ hints.ai_family = pf;
-+ hints.ai_socktype = SOCK_STREAM;
-
+-
- if ((inaddr.sin_addr.s_addr = inet_addr(host)) == -1)
-+ result = getaddrinfo(host, port, &hints, &res0);
-+ if ( result != 0 )
- {
+- {
-#if defined(HAVE_GETHOSTBYNAME_R_6_ARGS)
-- gethostbyname_r(host, &result, hbuf,
-- HOSTENT_BUFFER_SIZE, &hostp, &thd_err);
+- while ( gethostbyname_r(host, &result, hbuf,
+- HOSTENT_BUFFER_SIZE, &hostp, &thd_err)
+- && (thd_err == TRY_AGAIN) && (dns_retries++ < 10) )
+- {
+- log_error(LOG_LEVEL_ERROR, "Timeout #%u while trying to resolve %s. Trying again.",
+- dns_retries, host);
+- }
-#elif defined(HAVE_GETHOSTBYNAME_R_5_ARGS)
- hostp = gethostbyname_r(host, &result, hbuf,
- HOSTENT_BUFFER_SIZE, &thd_err);
- {
- hostp = NULL;
- }
--#elif OSX_DARWIN
+-#elif defined(OSX_DARWIN) || defined(__OpenBSD__)
- pthread_mutex_lock(&gethostbyname_mutex);
-- hostp = gethostbyname(host);
+- while ( NULL == (hostp = gethostbyname(host))
+- && (h_errno == TRY_AGAIN) && (dns_retries++ < 10) )
+- {
+- log_error(LOG_LEVEL_ERROR, "Timeout #%u while trying to resolve %s. Trying again.",
+- dns_retries, host);
+- }
- pthread_mutex_unlock(&gethostbyname_mutex);
-#else
-- hostp = gethostbyname(host);
+- while ( NULL == (hostp = gethostbyname(host))
+- && (h_errno == TRY_AGAIN) && (dns_retries++ < 10) )
+- {
+- log_error(LOG_LEVEL_ERROR, "Timeout #%u while trying to resolve %s. Trying again.",
+- dns_retries, host);
+- }
-#endif /* def HAVE_GETHOSTBYNAME_R_(6|5|3)_ARGS */
- /*
- * On Mac OSX, if a domain exists but doesn't have a type A
- (char *) hostp->h_addr,
- sizeof(inaddr.sin_addr)
- );
+- }
+- return(inaddr.sin_addr.s_addr);
+-
+-}
+-
++addr_list *resolve_hostname_to_ip(const char *host, const char *port, int pf)
++ {
++ /* TODO
++ * Do all supported platforms have "getaddrinfo"?
++ */
++
++ struct addrinfo hints, *res0;
++ int result;
++ memset(&hints, 0, sizeof(hints));
++ hints.ai_family = pf;
++ hints.ai_socktype = SOCK_STREAM;
++
++ result = getaddrinfo(host, port, &hints, &res0);
++ if ( result != 0 )
++ {
+ log_error(LOG_LEVEL_ERROR, "could not resolve hostname %s because %s", host,gai_strerror(result));
+ if (result == EAI_SYSTEM)
+ log_error(LOG_LEVEL_ERROR, "The system error is %E");
+ return NULL;
- }
-- return(inaddr.sin_addr.s_addr);
++ }
+ else
+ if (res0==0)
+ log_error(LOG_LEVEL_ERROR, "Problem in resolving hostname %s: succeeded, but no information returned", host);
-
++
+ return res0;
- }
-
++ }
+ /*
+ Local Variables:
diff -urNad privoxy~/jbsockets.h privoxy/jbsockets.h
--- privoxy~/jbsockets.h
+++ privoxy/jbsockets.h
* Based on the Internet Junkbuster originally written
* by and Copyright (C) 1997 Anonymous Coders and
* Junkbusters Corporation. http://www.junkbusters.com
-@@ -100,9 +103,11 @@
+@@ -104,9 +107,11 @@
extern "C" {
#endif
#ifdef AMIGA
extern int write_socket(jb_socket fd, const char *buf, ssize_t n);
#else
-@@ -111,10 +116,10 @@
+@@ -115,10 +120,10 @@
extern int read_socket(jb_socket fd, char *buf, int n);
extern void close_socket(jb_socket fd);
diff -urNad privoxy~/jcc.c privoxy/jcc.c
--- privoxy~/jcc.c
+++ privoxy/jcc.c
-@@ -676,6 +676,7 @@
+@@ -744,6 +744,7 @@
#include "cgi.h"
#include "loadcfg.h"
#include "urlmatch.h"
const char jcc_h_rcs[] = JCC_H_VERSION;
const char project_h_rcs[] = PROJECT_H_VERSION;
-@@ -2112,61 +2113,78 @@
+@@ -2304,61 +2305,78 @@
* Returns : Port that was opened.
*
*********************************************************************/
}
-@@ -2184,12 +2202,18 @@
+@@ -2387,12 +2405,18 @@
static void listen_loop(void)
{
struct client_state *csp = NULL;
#ifdef FEATURE_GRACEFUL_TERMINATION
while (!g_terminate)
-@@ -2263,14 +2287,55 @@
+@@ -2466,14 +2490,55 @@
* that this will hurt people's feelings.
*/
{
log_error(LOG_LEVEL_CONNECT, "accept failed: %E");
-@@ -2288,6 +2353,8 @@
+@@ -2491,6 +2556,8 @@
log_error(LOG_LEVEL_CONNECT, "OK");
}
* Based on the Internet Junkbuster originally written
* by and Copyright (C) 1997 Anonymous Coders and
* Junkbusters Corporation. http://www.junkbusters.com
-@@ -372,6 +375,7 @@
+@@ -402,6 +405,7 @@
#include "encode.h"
#include "urlmatch.h"
#include "cgi.h"
const char loadcfg_h_rcs[] = LOADCFG_H_VERSION;
-@@ -489,8 +493,8 @@
+@@ -521,8 +525,8 @@
struct forward_spec * next_fwd = cur_fwd->next;
free_url_spec(cur_fwd->url);
free(cur_fwd);
cur_fwd = next_fwd;
}
-@@ -507,7 +511,16 @@
+@@ -539,7 +543,16 @@
freez(config->confdir);
freez(config->logdir);
+ freez(config->hspecs);
freez(config->logfile);
- for (i = 0; i < MAX_ACTION_FILES; i++)
-@@ -570,6 +583,28 @@
+ for (i = 0; i < MAX_AF_FILES; i++)
+@@ -606,6 +619,28 @@
* Returns : The configuration_spec, or NULL on error.
*
*********************************************************************/
struct configuration_spec * load_config(void)
{
char buf[BUFFER_SIZE];
-@@ -601,12 +636,7 @@
+@@ -637,12 +672,7 @@
fs->f = config = (struct configuration_spec *)zalloc(sizeof(*config));
if (config==NULL)
/*
* This is backwards from how it's usually done.
-@@ -623,7 +653,7 @@
+@@ -659,7 +689,7 @@
* Set to defaults
*/
- config->multi_threaded = 1;
-- config->hport = HADDR_PORT;
-+ config->hspecs = NULL;
- config->buffer_limit = 4096 * 1024;
- config->usermanual = strdup(USER_MANUAL_URL);
- config->proxy_args = strdup("");
-@@ -640,9 +670,6 @@
+ config->multi_threaded = 1;
+- config->hport = HADDR_PORT;
++ config->hspecs = NULL;
+ config->buffer_limit = 4096 * 1024;
+ config->usermanual = strdup(USER_MANUAL_URL);
+ config->proxy_args = strdup("");
+@@ -678,9 +708,6 @@
char cmd[BUFFER_SIZE];
char arg[BUFFER_SIZE];
char tmp[BUFFER_SIZE];
struct forward_spec *cur_fwd;
int vec_count;
char *vec[3];
-@@ -753,74 +780,23 @@
+@@ -791,74 +818,23 @@
* *************************************************************************/
#ifdef FEATURE_ACL
case hash_deny_access:
#endif /* def FEATURE_ACL */
/* *************************************************************************
-@@ -914,16 +890,18 @@
+@@ -978,16 +954,18 @@
if (strcmp(p, ".") != 0)
{
cur_fwd->forward_port = 8000;
}
}
-@@ -977,15 +955,27 @@
+@@ -1041,15 +1019,27 @@
if (strcmp(p, ".") != 0)
{
cur_fwd->gateway_port = 1080;
}
}
-@@ -995,16 +985,26 @@
+@@ -1059,16 +1049,26 @@
if (strcmp(p, ".") != 0)
{
cur_fwd->forward_port = 8000;
}
}
-@@ -1056,16 +1056,30 @@
+@@ -1120,16 +1120,30 @@
/* Parse the SOCKS proxy host[:port] */
p = vec[1];
}
/* Parse the parent HTTP proxy host[:port] */
-@@ -1073,16 +1087,26 @@
+@@ -1137,16 +1151,26 @@
if (strcmp(p, ".") != 0)
{
cur_fwd->forward_port = 8000;
}
}
-@@ -1108,10 +1132,49 @@
+@@ -1179,10 +1203,49 @@
* listen-address [ip][:port]
* *************************************************************************/
case hash_listen_address :
/* *************************************************************************
* logdir directory-name
* *************************************************************************/
-@@ -1134,75 +1197,21 @@
+@@ -1205,75 +1268,21 @@
* *************************************************************************/
#ifdef FEATURE_ACL
case hash_permit_access:
continue;
#endif /* def FEATURE_ACL */
-@@ -1442,32 +1451,33 @@
+@@ -1513,32 +1522,33 @@
}
#endif /* def FEATURE_COOKIE_JAR */
}
/*
-@@ -1509,31 +1519,29 @@
+@@ -1580,31 +1590,29 @@
struct configuration_spec * oldcfg = (struct configuration_spec *)
current_configfile->f;
/*
* Based on the Internet Junkbuster originally written
* by and Copyright (C) 1997 Anonymous Coders and
* Junkbusters Corporation. http://www.junkbusters.com
-@@ -427,6 +430,7 @@
+@@ -465,6 +468,7 @@
freez(csp->ip_addr_str);
freez(csp->my_ip_addr_str);
diff -urNad privoxy~/miscutil.h privoxy/miscutil.h
--- privoxy~/miscutil.h
+++ privoxy/miscutil.h
-@@ -142,6 +142,15 @@
+@@ -162,6 +162,15 @@
#include "project.h"
* Based on the Internet Junkbuster originally written
* by and Copyright (C) 1997 Anonymous Coders and
* Junkbusters Corporation. http://www.junkbusters.com
-@@ -1953,6 +1956,167 @@
+@@ -1929,6 +1932,167 @@
+ return JB_ERR_OK;
}
- #endif /* def FEATURE_FORCE_LOAD */
+/*********************************************************************
+ *
+}
+
- /*
- Local Variables:
+ /*********************************************************************
+ *
diff -urNad privoxy~/parsers.h privoxy/parsers.h
--- privoxy~/parsers.h
+++ privoxy/parsers.h
* Based on the Internet Junkbuster originally written
* by and Copyright (C) 1997 Anonymous Coders and
* Junkbusters Corporation. http://www.junkbusters.com
-@@ -227,6 +230,10 @@
- extern jb_err server_transfer_coding (struct client_state *csp, char **header);
- extern jb_err server_http (struct client_state *csp, char **header);
+@@ -270,6 +273,10 @@
+ extern jb_err server_last_modified (struct client_state *csp, char **header);
+ extern jb_err server_content_disposition(struct client_state *csp, char **header);
+extern int parse_pf_ip_netmask(char *string, char **host, char **port, int *pf, int *masklength);
+extern int parse_pf_ip(char *string, char ** host, char ** port, int *pf);
diff -urNad privoxy~/project.h privoxy/project.h
--- privoxy~/project.h
+++ privoxy/project.h
-@@ -549,6 +549,20 @@
+@@ -598,6 +598,20 @@
#endif /* ndef _WIN32 */
/**
* A standard error code. This should be JB_ERR_OK or one of the JB_ERR_xxx
-@@ -618,19 +632,6 @@
+@@ -667,19 +681,6 @@
*/
#define FOREVER 1
/* Forward def for struct client_state */
struct configuration_spec;
-@@ -709,13 +710,16 @@
+@@ -758,13 +759,16 @@
char *ver; /**< Protocol version */
int status; /**< HTTP Status */
of host's IP. NULL before connect_to() */
char *dbuffer; /**< Buffer with '\0'-delimited domain name. */
-@@ -1039,13 +1043,16 @@
+@@ -1144,13 +1148,16 @@
As a string. */
char *ip_addr_str;
/** Client PC's IP address, as reported by the accept() function.
/** Our hostname. I.e. the reverse DNS of the IP address that the client
used to reach us, as a string. */
char *my_hostname;
-@@ -1214,18 +1221,33 @@
+@@ -1325,18 +1332,33 @@
/** Connection type. Must be SOCKS_NONE, SOCKS_4, or SOCKS_4A. */
int type;
/** Next entry in the linked list. */
struct forward_spec *next;
};
-@@ -1234,7 +1256,7 @@
+@@ -1345,7 +1367,7 @@
/**
* Initializer for a static struct forward_spec.
*/
/**
-@@ -1263,7 +1285,8 @@
+@@ -1374,7 +1396,8 @@
*/
struct access_control_addr
{
unsigned long mask; /**< The network mask as an integer. */
unsigned long port; /**< The port number. */
};
-@@ -1295,6 +1318,17 @@
- /** configuration_spec::feature_flags: Web-based toggle. */
- #define RUNTIME_FEATURE_CGI_TOGGLE 2
+@@ -1409,6 +1432,17 @@
+ /** configuration_spec::feature_flags: HTTP-header-based toggle. */
+ #define RUNTIME_FEATURE_HTTP_TOGGLE 4
+struct bind_spec
+{
+ /** Address family */
+ int pf;
+};
-
/**
* Data loaded from the configuration file.
-@@ -1355,11 +1389,13 @@
+ *
+@@ -1472,11 +1506,13 @@
#endif /* def FEATURE_COOKIE_JAR */
diff -urNad privoxy~/urlmatch.c privoxy/urlmatch.c
--- privoxy~/urlmatch.c
+++ privoxy/urlmatch.c
-@@ -133,6 +133,7 @@
+@@ -137,6 +137,7 @@
#include "ssplit.h"
#include "miscutil.h"
#include "errlog.h"
const char urlmatch_h_rcs[] = URLMATCH_H_VERSION;
-@@ -156,7 +157,7 @@
+@@ -160,7 +161,7 @@
freez(http->cmd);
freez(http->ocmd);
freez(http->gpc);
freez(http->url);
freez(http->hostport);
freez(http->path);
-@@ -298,8 +299,6 @@
+@@ -302,8 +303,6 @@
*/
{
char *buf;
buf = strdup(http->hostport);
if (buf == NULL)
-@@ -307,38 +306,34 @@
+@@ -311,38 +310,34 @@
return JB_ERR_MEMORY;
}
if (http->host == NULL)
{
return JB_ERR_MEMORY;
-@@ -662,9 +657,8 @@
+@@ -666,9 +661,8 @@
* written to system log)
*
*********************************************************************/
assert(url);
assert(buf);
-@@ -681,22 +675,25 @@
+@@ -685,22 +679,25 @@
{
return JB_ERR_MEMORY;
}
if (url->path)
{
int errcode;
-@@ -735,15 +732,12 @@
+@@ -739,15 +736,12 @@
return JB_ERR_PARSE;
}
}
if (buf[0] != '\0')
{
-@@ -775,12 +769,13 @@
+@@ -779,12 +773,13 @@
return JB_ERR_MEMORY;
}
diff -urNad privoxy~/urlmatch.h privoxy/urlmatch.h
--- privoxy~/urlmatch.h
+++ privoxy/urlmatch.h
-@@ -79,7 +79,7 @@
+@@ -83,7 +83,7 @@
extern int url_match(const struct url_spec *pattern,
const struct http_request *url);