print linenumber from all conf-emitted warnings
This commit is contained in:
		
							parent
							
								
									f55c46eb39
								
							
						
					
					
						commit
						960972865c
					
				
							
								
								
									
										27
									
								
								src/conf.c
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								src/conf.c
									
									
									
									
									
								
							@ -74,6 +74,9 @@
 | 
			
		||||
 */
 | 
			
		||||
#define RE_MAX_MATCHES 24
 | 
			
		||||
 | 
			
		||||
#define CP_WARN(FMT, ...) \
 | 
			
		||||
        log_message (LOG_WARNING, "line %lu: " FMT, lineno, __VA_ARGS__)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * All configuration handling functions are REQUIRED to be defined
 | 
			
		||||
 * with the same function template as below.
 | 
			
		||||
@ -638,9 +641,7 @@ static HANDLE_FUNC (handle_anonymous)
 | 
			
		||||
                return -1;
 | 
			
		||||
 | 
			
		||||
        if(anonymous_insert (conf, arg) < 0) {
 | 
			
		||||
                log_message (LOG_WARNING,
 | 
			
		||||
                             "anonymous_insert() failed: '%s'",
 | 
			
		||||
                             arg);
 | 
			
		||||
                CP_WARN ("anonymous_insert() failed: '%s'", arg);
 | 
			
		||||
                safefree(arg);
 | 
			
		||||
                return -1;
 | 
			
		||||
        }
 | 
			
		||||
@ -768,7 +769,7 @@ static HANDLE_FUNC (handle_group)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void warn_invalid_address(char *arg, unsigned long lineno) {
 | 
			
		||||
        log_message (LOG_WARNING, "Invalid address %s on line %lu", arg, lineno);
 | 
			
		||||
        CP_WARN ("Invalid address %s", arg);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static HANDLE_FUNC (handle_allow)
 | 
			
		||||
@ -813,8 +814,8 @@ static HANDLE_FUNC (handle_listen)
 | 
			
		||||
        if (conf->listen_addrs == NULL) {
 | 
			
		||||
               conf->listen_addrs = sblist_new(sizeof(char*), 16);
 | 
			
		||||
               if (conf->listen_addrs == NULL) {
 | 
			
		||||
                       log_message(LOG_WARNING, "Could not create a list "
 | 
			
		||||
                                   "of listen addresses.");
 | 
			
		||||
                       CP_WARN ("Could not create a list "
 | 
			
		||||
                                   "of listen addresses.", "");
 | 
			
		||||
                       safefree(arg);
 | 
			
		||||
                       return -1;
 | 
			
		||||
               }
 | 
			
		||||
@ -840,9 +841,7 @@ static HANDLE_FUNC (handle_errorfile)
 | 
			
		||||
        char *page = get_string_arg (line, &match[4]);
 | 
			
		||||
 | 
			
		||||
        if(add_new_errorpage (conf, page, err) < 0) {
 | 
			
		||||
                log_message (LOG_WARNING,
 | 
			
		||||
                             "add_new_errorpage() failed: '%s'",
 | 
			
		||||
                             page);
 | 
			
		||||
                CP_WARN ("add_new_errorpage() failed: '%s'", page);
 | 
			
		||||
                safefree (page);
 | 
			
		||||
        }
 | 
			
		||||
        return 0;
 | 
			
		||||
@ -1025,6 +1024,7 @@ static HANDLE_FUNC (handle_upstream)
 | 
			
		||||
        int port, mi;
 | 
			
		||||
        char *domain = 0, *user = 0, *pass = 0, *tmp;
 | 
			
		||||
        enum proxy_type pt;
 | 
			
		||||
        enum upstream_build_error ube;
 | 
			
		||||
 | 
			
		||||
        if (match[3].rm_so != -1) {
 | 
			
		||||
                tmp = get_string_arg (line, &match[3]);
 | 
			
		||||
@ -1034,9 +1034,9 @@ static HANDLE_FUNC (handle_upstream)
 | 
			
		||||
                        domain = get_string_arg (line, &match[4]);
 | 
			
		||||
                        if (!domain)
 | 
			
		||||
                                return -1;
 | 
			
		||||
                        upstream_add (NULL, 0, domain, 0, 0, PT_NONE, &conf->upstream_list);
 | 
			
		||||
                        ube = upstream_add (NULL, 0, domain, 0, 0, PT_NONE, &conf->upstream_list);
 | 
			
		||||
                        safefree (domain);
 | 
			
		||||
                        return 0;
 | 
			
		||||
                        goto check_err;
 | 
			
		||||
                }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -1066,13 +1066,16 @@ static HANDLE_FUNC (handle_upstream)
 | 
			
		||||
        if (match[mi].rm_so != -1)
 | 
			
		||||
                domain = get_string_arg (line, &match[mi]);
 | 
			
		||||
 | 
			
		||||
        upstream_add (ip, port, domain, user, pass, pt, &conf->upstream_list);
 | 
			
		||||
        ube = upstream_add (ip, port, domain, user, pass, pt, &conf->upstream_list);
 | 
			
		||||
 | 
			
		||||
        safefree (user);
 | 
			
		||||
        safefree (pass);
 | 
			
		||||
        safefree (domain);
 | 
			
		||||
        safefree (ip);
 | 
			
		||||
 | 
			
		||||
check_err:;
 | 
			
		||||
        if(ube != UBE_SUCCESS)
 | 
			
		||||
                CP_WARN("%s", upstream_build_error_string(ube));
 | 
			
		||||
        return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -43,20 +43,34 @@ proxy_type_name(proxy_type type)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const char* upstream_build_error_string(enum upstream_build_error ube) {
 | 
			
		||||
        static const char *emap[] = {
 | 
			
		||||
        [UBE_SUCCESS] = "",
 | 
			
		||||
        [UBE_OOM] = "Unable to allocate memory in upstream_build()",
 | 
			
		||||
        [UBE_USERLEN] = "User / pass in upstream config too long",
 | 
			
		||||
        [UBE_EDOMAIN] = "Nonsense upstream none rule: empty domain",
 | 
			
		||||
        [UBE_INVHOST] = "Nonsense upstream rule: invalid host or port",
 | 
			
		||||
        [UBE_INVPARAMS] = "Nonsense upstream rule: invalid parameters",
 | 
			
		||||
        [UBE_NETMASK] = "Nonsense upstream rule: failed to parse netmask",
 | 
			
		||||
        };
 | 
			
		||||
        return emap[ube];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Construct an upstream struct from input data.
 | 
			
		||||
 */
 | 
			
		||||
static struct upstream *upstream_build (const char *host, int port, const char *domain,
 | 
			
		||||
                        const char *user, const char *pass,
 | 
			
		||||
			proxy_type type)
 | 
			
		||||
			proxy_type type, enum upstream_build_error *ube)
 | 
			
		||||
{
 | 
			
		||||
        char *ptr;
 | 
			
		||||
        struct upstream *up;
 | 
			
		||||
 | 
			
		||||
        *ube = UBE_SUCCESS;
 | 
			
		||||
        up = (struct upstream *) safemalloc (sizeof (struct upstream));
 | 
			
		||||
        if (!up) {
 | 
			
		||||
                log_message (LOG_ERR,
 | 
			
		||||
                             "Unable to allocate memory in upstream_build()");
 | 
			
		||||
                *ube = UBE_OOM;
 | 
			
		||||
                return NULL;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -69,8 +83,7 @@ static struct upstream *upstream_build (const char *host, int port, const char *
 | 
			
		||||
                        ssize_t ret;
 | 
			
		||||
                        ret = basicauth_string(user, pass, b, sizeof b);
 | 
			
		||||
                        if (ret == 0) {
 | 
			
		||||
                                log_message (LOG_ERR,
 | 
			
		||||
                                             "User / pass in upstream config too long");
 | 
			
		||||
                                *ube = UBE_USERLEN;
 | 
			
		||||
                                return NULL;
 | 
			
		||||
                        }
 | 
			
		||||
                        up->ua.authstr = safestrdup (b);
 | 
			
		||||
@ -83,13 +96,11 @@ static struct upstream *upstream_build (const char *host, int port, const char *
 | 
			
		||||
        if (domain == NULL) {
 | 
			
		||||
                if (type == PT_NONE) {
 | 
			
		||||
                e_nonedomain:;
 | 
			
		||||
                        log_message (LOG_WARNING,
 | 
			
		||||
                                     "Nonsense upstream none rule: empty domain");
 | 
			
		||||
                        *ube = UBE_EDOMAIN;
 | 
			
		||||
                        goto fail;
 | 
			
		||||
                }
 | 
			
		||||
                if (!host || !host[0] || port < 1) {
 | 
			
		||||
                        log_message (LOG_WARNING,
 | 
			
		||||
                                     "Nonsense upstream rule: invalid host or port");
 | 
			
		||||
                        *ube = UBE_INVHOST;
 | 
			
		||||
                        goto fail;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
@ -103,8 +114,7 @@ static struct upstream *upstream_build (const char *host, int port, const char *
 | 
			
		||||
                        if (!domain[0]) goto e_nonedomain;
 | 
			
		||||
                } else {
 | 
			
		||||
                        if (!host || !host[0] || !domain[0]) {
 | 
			
		||||
                                log_message (LOG_WARNING,
 | 
			
		||||
                                             "Nonsense upstream rule: invalid parameters");
 | 
			
		||||
                                *ube = UBE_INVPARAMS;
 | 
			
		||||
                                goto fail;
 | 
			
		||||
                        }
 | 
			
		||||
                        up->host = safestrdup (host);
 | 
			
		||||
@ -130,8 +140,7 @@ static struct upstream *upstream_build (const char *host, int port, const char *
 | 
			
		||||
                                }
 | 
			
		||||
                                up->ip = up->ip & up->mask;
 | 
			
		||||
                        } else {
 | 
			
		||||
                                log_message (LOG_WARNING,
 | 
			
		||||
                                             "Nonsense upstream rule: failed to parse netmask");
 | 
			
		||||
                                *ube = UBE_NETMASK;
 | 
			
		||||
                                goto fail;
 | 
			
		||||
                        }
 | 
			
		||||
                } else {
 | 
			
		||||
@ -160,15 +169,17 @@ fail:
 | 
			
		||||
/*
 | 
			
		||||
 * Add an entry to the upstream list
 | 
			
		||||
 */
 | 
			
		||||
void upstream_add (const char *host, int port, const char *domain,
 | 
			
		||||
enum upstream_build_error upstream_add (
 | 
			
		||||
                   const char *host, int port, const char *domain,
 | 
			
		||||
                   const char *user, const char *pass,
 | 
			
		||||
                   proxy_type type, struct upstream **upstream_list)
 | 
			
		||||
{
 | 
			
		||||
        struct upstream *up;
 | 
			
		||||
        enum upstream_build_error ube;
 | 
			
		||||
 | 
			
		||||
        up = upstream_build (host, port, domain, user, pass, type);
 | 
			
		||||
        up = upstream_build (host, port, domain, user, pass, type, &ube);
 | 
			
		||||
        if (up == NULL) {
 | 
			
		||||
                return;
 | 
			
		||||
                return ube;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (!up->domain && !up->ip) {   /* always add default to end */
 | 
			
		||||
@ -184,7 +195,7 @@ void upstream_add (const char *host, int port, const char *domain,
 | 
			
		||||
                        if (!tmp->next) {
 | 
			
		||||
                                up->next = NULL;
 | 
			
		||||
                                tmp->next = up;
 | 
			
		||||
                                return;
 | 
			
		||||
                                return ube;
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        tmp = tmp->next;
 | 
			
		||||
@ -194,14 +205,14 @@ void upstream_add (const char *host, int port, const char *domain,
 | 
			
		||||
        up->next = *upstream_list;
 | 
			
		||||
        *upstream_list = up;
 | 
			
		||||
 | 
			
		||||
        return;
 | 
			
		||||
        return ube;
 | 
			
		||||
 | 
			
		||||
upstream_cleanup:
 | 
			
		||||
        safefree (up->host);
 | 
			
		||||
        safefree (up->domain);
 | 
			
		||||
        safefree (up);
 | 
			
		||||
 | 
			
		||||
        return;
 | 
			
		||||
        return ube;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 | 
			
		||||
@ -27,6 +27,16 @@
 | 
			
		||||
 | 
			
		||||
#include "common.h"
 | 
			
		||||
 | 
			
		||||
enum upstream_build_error {
 | 
			
		||||
	UBE_SUCCESS = 0,
 | 
			
		||||
	UBE_OOM,
 | 
			
		||||
	UBE_USERLEN,
 | 
			
		||||
	UBE_EDOMAIN,
 | 
			
		||||
	UBE_INVHOST,
 | 
			
		||||
	UBE_INVPARAMS,
 | 
			
		||||
	UBE_NETMASK,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Even if upstream support is not compiled into tinyproxy, this
 | 
			
		||||
 * structure still needs to be defined.
 | 
			
		||||
@ -54,11 +64,13 @@ struct upstream {
 | 
			
		||||
 | 
			
		||||
#ifdef UPSTREAM_SUPPORT
 | 
			
		||||
const char *proxy_type_name(proxy_type type);
 | 
			
		||||
extern void upstream_add (const char *host, int port, const char *domain,
 | 
			
		||||
extern enum upstream_build_error upstream_add (
 | 
			
		||||
                          const char *host, int port, const char *domain,
 | 
			
		||||
                          const char *user, const char *pass,
 | 
			
		||||
                          proxy_type type, struct upstream **upstream_list);
 | 
			
		||||
extern struct upstream *upstream_get (char *host, struct upstream *up);
 | 
			
		||||
extern void free_upstream_list (struct upstream *up);
 | 
			
		||||
extern const char* upstream_build_error_string(enum upstream_build_error);
 | 
			
		||||
#endif /* UPSTREAM_SUPPORT */
 | 
			
		||||
 | 
			
		||||
#endif /* _TINYPROXY_UPSTREAM_H_ */
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user