diff options
author | rofl0r <retnyg@gmx.net> | 2011-11-07 07:11:20 +0400 |
---|---|---|
committer | rofl0r <retnyg@gmx.net> | 2011-11-07 07:11:20 +0400 |
commit | 16fa60a705759be0caf8f0949f35990bd48ba155 (patch) | |
tree | 76fae1e734109827342a390daad44628bbec85d9 | |
parent | 08d6feace80ef0b83bc9ce6c7d933ad00c6f0dae (diff) |
oh wait. checking the hash is not enough.
-rw-r--r-- | src/core.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -782,9 +782,10 @@ struct hostent* proxy_gethostbyname(const char *name) pthread_mutex_lock(&internal_ips_lock); #endif + // see if we already have this dns entry saved. if(internal_ips.counter) { for( i = 0; i < internal_ips.counter; i++) { - if(internal_ips.list[i]->hash == hash) { + if(internal_ips.list[i]->hash == hash && !strcmp(name, internal_ips.list[i]->string)) { resolved_addr = make_internal_ip(i); PDEBUG("got cached ip for %s\n", name); goto have_ip; @@ -792,6 +793,7 @@ struct hostent* proxy_gethostbyname(const char *name) } } + // grow list if needed. if(internal_ips.capa < internal_ips.counter + 1) { PDEBUG("realloc\n"); new_mem = realloc(internal_ips.list, (internal_ips.capa + 16) * sizeof(void*)); |