From 245f6f007881fc6cb752e0fc6641bc0c8910e857 Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Sat, 10 Nov 2012 23:32:20 +0100 Subject: [PATCH] Remove HTTP_PARSER_DEBUG macro. Remove the HTTP_PARSER_DEBUG macro for two reasons: * It changes the size of struct http_parser, resulting in spurious memory corruption bugs if part of your application is built with HTTP_PARSER_DEBUG=1 and other parts with HTTP_PARSER_DEBUG=0. * It's a debugging tool for maintainers. It should never have been exposed in the API in the first place. --- Makefile | 4 ++-- http_parser.c | 8 -------- http_parser.h | 19 ------------------- test.c | 3 +-- 4 files changed, 3 insertions(+), 31 deletions(-) diff --git a/Makefile b/Makefile index d9bf839..4bc8a8d 100644 --- a/Makefile +++ b/Makefile @@ -2,9 +2,9 @@ CC?=gcc AR?=ar CPPFLAGS += -I. -CPPFLAGS_DEBUG = $(CPPFLAGS) -DHTTP_PARSER_STRICT=1 -DHTTP_PARSER_DEBUG=1 +CPPFLAGS_DEBUG = $(CPPFLAGS) -DHTTP_PARSER_STRICT=1 CPPFLAGS_DEBUG += $(CPPFLAGS_DEBUG_EXTRA) -CPPFLAGS_FAST = $(CPPFLAGS) -DHTTP_PARSER_STRICT=0 -DHTTP_PARSER_DEBUG=0 +CPPFLAGS_FAST = $(CPPFLAGS) -DHTTP_PARSER_STRICT=0 CPPFLAGS_FAST += $(CPPFLAGS_FAST_EXTRA) CFLAGS += -Wall -Wextra -Werror diff --git a/http_parser.c b/http_parser.c index 542a875..b13a28c 100644 --- a/http_parser.c +++ b/http_parser.c @@ -51,18 +51,10 @@ # define ELEM_AT(a, i, v) ((unsigned int) (i) < ARRAY_SIZE(a) ? (a)[(i)] : (v)) #endif -#if HTTP_PARSER_DEBUG -#define SET_ERRNO(e) \ -do { \ - parser->http_errno = (e); \ - parser->error_lineno = __LINE__; \ -} while (0) -#else #define SET_ERRNO(e) \ do { \ parser->http_errno = (e); \ } while(0) -#endif /* Run the notify callback FOR, returning ER if it fails */ diff --git a/http_parser.h b/http_parser.h index 98a20c0..4f20396 100644 --- a/http_parser.h +++ b/http_parser.h @@ -51,14 +51,6 @@ typedef SSIZE_T ssize_t; # define HTTP_PARSER_STRICT 1 #endif -/* Compile with -DHTTP_PARSER_DEBUG=1 to add extra debugging information to - * the error reporting facility. - */ -#ifndef HTTP_PARSER_DEBUG -# define HTTP_PARSER_DEBUG 0 -#endif - - /* Maximium header size allowed */ #define HTTP_MAX_HEADER_SIZE (80*1024) @@ -196,13 +188,6 @@ enum http_errno { /* Get an http_errno value from an http_parser */ #define HTTP_PARSER_ERRNO(p) ((enum http_errno) (p)->http_errno) -/* Get the line number that generated the current error */ -#if HTTP_PARSER_DEBUG -#define HTTP_PARSER_ERRNO_LINE(p) ((p)->error_lineno) -#else -#define HTTP_PARSER_ERRNO_LINE(p) 0 -#endif - struct http_parser { /** PRIVATE **/ @@ -229,10 +214,6 @@ struct http_parser { */ unsigned char upgrade : 1; -#if HTTP_PARSER_DEBUG - uint32_t error_lineno; -#endif - /** PUBLIC **/ void *data; /* A pointer to get hook to the "connection" or "socket" object */ }; diff --git a/test.c b/test.c index d205c0d..0caea24 100644 --- a/test.c +++ b/test.c @@ -1954,8 +1954,7 @@ upgrade_message_fix(char *body, const size_t nread, const size_t nmsgs, ...) { static void print_error (const char *raw, size_t error_location) { - fprintf(stderr, "\n*** %s:%d -- %s ***\n\n", - "http_parser.c", HTTP_PARSER_ERRNO_LINE(parser), + fprintf(stderr, "\n*** %s ***\n\n", http_errno_description(HTTP_PARSER_ERRNO(parser))); int this_line = 0, char_len = 0;