diff --git a/binaries/armhf/tpws b/binaries/armhf/tpws index 1deae6e..088d191 100755 Binary files a/binaries/armhf/tpws and b/binaries/armhf/tpws differ diff --git a/binaries/mips32r1-lsb/tpws b/binaries/mips32r1-lsb/tpws index f3e8ec7..9a8cad2 100755 Binary files a/binaries/mips32r1-lsb/tpws and b/binaries/mips32r1-lsb/tpws differ diff --git a/binaries/mips32r1-msb/tpws b/binaries/mips32r1-msb/tpws index 10581b6..83940a0 100755 Binary files a/binaries/mips32r1-msb/tpws and b/binaries/mips32r1-msb/tpws differ diff --git a/binaries/x86_64/tpws b/binaries/x86_64/tpws index a6d7e26..d7011fa 100755 Binary files a/binaries/x86_64/tpws and b/binaries/x86_64/tpws differ diff --git a/tpws/chartree.c b/tpws/chartree.c index ef19502..8a44b8d 100644 --- a/tpws/chartree.c +++ b/tpws/chartree.c @@ -1,81 +1,81 @@ -#include "chartree.h" -#include -#include - -static char *DupLower(const char *s) -{ - char *sp,*sl = strdup(s); - if (!sl) return false; - for(sp=sl;*sp;sp++) *sp=tolower(*sp); - return sl; -} - -static cptr *CharTreeInit(char c) -{ - cptr *p; - p=(cptr *)calloc(1,sizeof(cptr)); - if (p) p->chr = c; - return p; -} -void CharTreeDestroy(cptr *p) -{ - if (p) - { - CharTreeDestroy(p->leaf); - CharTreeDestroy(p->next); - free(p); - } -} -static cptr *CharTreeFindChar(cptr *p,char c) -{ - while (p) - { - if (p->chr==c) return p; - p = p->next; - } - return NULL; -} -bool CharTreeAddStr(cptr **pp,const char *s) -{ - cptr *p; - if (*pp) - { - if (!(p=CharTreeFindChar(*pp,*s))) - { - // already present. append to list head - if (!(p = CharTreeInit(*s))) - return false; - p->next = *pp; - *pp = p; - } - } - else - if (!(p = *pp = CharTreeInit(*s))) return false; - if (!*s) return true; - return CharTreeAddStr(&p->leaf,s+1); -} -bool CharTreeCheckStr(cptr *p,const char *s) -{ - p = CharTreeFindChar(p,*s); - if (!p) return false; - if (!*s) return true; - return CharTreeCheckStr(p->leaf,s+1); -} -bool CharTreeAddStrLower(cptr **pp,const char *s) -{ - bool b; - char *sl = DupLower(s); - if (!sl) return false; - b=CharTreeAddStr(pp,sl); - free(sl); - return b; -} -bool CharTreeCheckStrLower(cptr *pp,const char *s) -{ - bool b; - char *sl = DupLower(s); - if (!sl) return false; - b=CharTreeCheckStr(pp,sl); - free(sl); - return b; -} +#include "chartree.h" +#include +#include + +static char *DupLower(const char *s) +{ + char *sp,*sl = strdup(s); + if (!sl) return false; + for(sp=sl;*sp;sp++) *sp=tolower(*sp); + return sl; +} + +static cptr *CharTreeInit(char c) +{ + cptr *p; + p=(cptr *)calloc(1,sizeof(cptr)); + if (p) p->chr = c; + return p; +} +void CharTreeDestroy(cptr *p) +{ + if (p) + { + CharTreeDestroy(p->leaf); + CharTreeDestroy(p->next); + free(p); + } +} +static cptr *CharTreeFindChar(cptr *p,char c) +{ + while (p) + { + if (p->chr==c) return p; + p = p->next; + } + return NULL; +} +bool CharTreeAddStr(cptr **pp,const char *s) +{ + cptr *p; + if (*pp) + { + if (!(p=CharTreeFindChar(*pp,*s))) + { + // already present. append to list head + if (!(p = CharTreeInit(*s))) + return false; + p->next = *pp; + *pp = p; + } + } + else + if (!(p = *pp = CharTreeInit(*s))) return false; + if (!*s) return true; + return CharTreeAddStr(&p->leaf,s+1); +} +bool CharTreeCheckStr(cptr *p,const char *s) +{ + p = CharTreeFindChar(p,*s); + if (!p) return false; + if (!*s) return true; + return CharTreeCheckStr(p->leaf,s+1); +} +bool CharTreeAddStrLower(cptr **pp,const char *s) +{ + bool b; + char *sl = DupLower(s); + if (!sl) return false; + b=CharTreeAddStr(pp,sl); + free(sl); + return b; +} +bool CharTreeCheckStrLower(cptr *pp,const char *s) +{ + bool b; + char *sl = DupLower(s); + if (!sl) return false; + b=CharTreeCheckStr(pp,sl); + free(sl); + return b; +} diff --git a/tpws/chartree.h b/tpws/chartree.h index ac2eddc..6998143 100644 --- a/tpws/chartree.h +++ b/tpws/chartree.h @@ -1,16 +1,16 @@ -#pragma once - -#include -#include - -typedef struct cptr -{ - char chr; - struct cptr *leaf,*next; -} cptr; - -void CharTreeDestroy(cptr *p); -bool CharTreeAddStr(cptr **pp,const char *s); -bool CharTreeAddStrLower(cptr **pp,const char *s); -bool CharTreeCheckStr(cptr *p,const char *s); -bool CharTreeCheckStrLower(cptr *pp,const char *s); +#pragma once + +#include +#include + +typedef struct cptr +{ + char chr; + struct cptr *leaf,*next; +} cptr; + +void CharTreeDestroy(cptr *p); +bool CharTreeAddStr(cptr **pp,const char *s); +bool CharTreeAddStrLower(cptr **pp,const char *s); +bool CharTreeCheckStr(cptr *p,const char *s); +bool CharTreeCheckStrLower(cptr *pp,const char *s); diff --git a/tpws/tpws.c b/tpws/tpws.c index 3043a2b..f9f74b6 100644 --- a/tpws/tpws.c +++ b/tpws/tpws.c @@ -275,7 +275,7 @@ bool handle_epollin(tproxy_conn_t *conn, int *data_transferred) { } } - if (params.hostnospace && pHost[5] == ' ' && find_host(&pHost,buf,bs)) + if (params.hostnospace && find_host(&pHost,buf,bs) && pHost[5] == ' ') { p = pHost + 6; pos = p - buf;