This was defined in misc.h, and also in network.h (because one
function prototype needed to refer to it in the latter), leading to a
build failure if any source file inconveniently included both those
headers.
Fixed by guarding each copy of the typedef with a #ifdef.
int base64_decode_atom(const char *atom, unsigned char *out);
struct bufchain_granule;
-typedef struct bufchain_tag {
+struct bufchain_tag {
struct bufchain_granule *head, *tail;
int buffersize; /* current amount of buffered data */
-} bufchain;
+};
+#ifndef BUFCHAIN_TYPEDEF
+typedef struct bufchain_tag bufchain; /* rest of declaration in misc.c */
+#define BUFCHAIN_TYPEDEF
+#endif
void bufchain_init(bufchain *ch);
void bufchain_clear(bufchain *ch);
void backend_socket_log(void *frontend, int type, SockAddr addr, int port,
const char *error_msg, int error_code, Conf *conf,
int session_started);
+#ifndef BUFCHAIN_TYPEDEF
typedef struct bufchain_tag bufchain; /* rest of declaration in misc.c */
+#define BUFCHAIN_TYPEDEF
+#endif
void log_proxy_stderr(Plug plug, bufchain *buf, const void *vdata, int len);
#endif