1.3.17 2006-5-14 * Fixed headers for Windows/Netware compliation (Guenter Knauf) * Fixed Received Error -21 (Sanity check database_info string failed) when running geoipupdate with GeoIP Country when UserId and productIds were not specified. Bug was introduced in 1.3.15. 1.3.16 2006-4-17 * Fixed compliation error in GeoIPUpdate.c 1.3.15 2006-4-14 * Updated README documentation * Updated geoipupdate so that it writes file as it is uncompressed instead of storing entire GeoIP.dat file in memory (Frank Mather) * Updated geoiplookup so that it returns GeoIP Domain Name if available (Frank Mather) * Updated geoipupdate so that it reports whether databases are updated in non-verbose mode (Frank Mather) 1.3.14 2005-9-7 * Check if byte, ushort, ulong, u16, u32 are defined in configure script. Fixes compilation issue on FreeBSD systems. * Check for Big Endian byte order (needed for MD5 code in geoipupdate to work properly on Mac OS X and other Big Endian processors) * Fixed GEOIP_CHECK_CACHE mode when used with GEOIP_STANDARD to only refresh upon file change * Fixed memory leak when refreshing file in GEOIP_CHECK_CACHE mode * Updated ltmain.sh to support Debian GNU/k*BSD bug #315425 (Marek Habersack) * Added lookup functions using IP numeric representation as input (Frank Mather) * Removed geoipexport * Replaced Yugoslavia with Serbia and Montenegro * Updated geoiplookup to only perform country lookup once instead of twice by using GeoIP_id_by_name 1.3.13 2005-8-1 * Fixed autoconf weirdness that resulted in libraries being installed without .so suffix 1.3.12 2005-7-19 * Removed -lGeoIP from libGeoIPUpdate_la_LIBADD - fixes compilation error if GeoIP isn't already installed (Thomas Steudten) 1.3.11 2005-7-7 * Fixed gcc warnings and bug. Use int instead of char for checking the return value of getopt in geoipupdate.c. Moved the internal functions to GeoIP_internal.h to get rid of those 'implicit declaration' warnings. (Ludwig Nussel/SUSE) * Cleaned up name space by prefixing internal functions with _GeoIP* (Ludwig Nussel/SUSE) * Memory Leak fix for GeoIP City if fread error * Added more verbose error messages for geoipupdate (Frank Mather) * Added check for zlib.h to configure.in 1.3.10 2005-4-17 * Added types.h to Makefile.am - fixes compilation error 1.3.9 2005-4-14 * fixed bug with GEOIP_INDEX_CACHE (Frank Mather) * fixed segfault issue if GeoIP.dat not found (Frank Mather) * Updated MD5 checksum code to use GnuPG code which works on 64bit machines (Frank Mather) * Fixed memory leak in test-geoip-isp.c and test-geoip-org.c * Added support for GeoIP Domain Names in geoipupdate 1.3.8 2004-11-7 * Updated geoipupdate to report invalid userID and productID errors * Check if gethostbyname_r is version that returns int or is other version - should fix compile errors on Solaris and FreeBSD * Updated URL to get license key, userId, and product Ids in conf/GeoIP.conf.default * Updated test case, removed www.asahi.com * Added support for GEOIP_INDEX_CACHE - which just caches the most frequently access index portion of the database, resulting in faster lookups than GEOIP_STANDARD, but less memory usage than GEOIP_MEMORY_CACHE (Frank Mather) 1.3.7 2004-10-5 * Updated test case, removed www.bundesregierung.de added www.asahi.com 1.3.6 2004-8-8 * Check for gethostbyname_r support in configure (Mac OS X doesn't support gethostbyname_r) * Made GeoIP City code thread safe * Fixed bug with geoipupdate reading in product ids * Added support for GeoIP Netspeed geoipupdate * Fix memleak in lookupaddress (Ludwig Nussel/SUSE) * Add prototype for _full_path_to to make 64bit clean (Ludwig Nussel/SUSE) * Add return values to test programs (Ludwig Nussel/SUSE) 1.3.5 2004-7-5 * Added more documentation to README file * Made GEOIP_CHECK_CACHE work with GEOIP_STANDARD mode - reloads filehandle in case file changes. * Added GeoIP_country_code_by_ipnum and GeoIP_id_by_ipnum to use existing ulong IP Address in numeric form instead of having to convert it to string (Boris Hajduk) * Made code thread safe by replacing gethostbyname with gethostbyname_r 1.3.4 2004-6-4 * Fixed bug where *.gz file(s) didn't get removed after geoipupdate 1.3.3 2004-6-2 * Added support for NetSpeed lookup to geoiplookup * inet_addr patch for 64 bit systems (Thomas Steudten) * Added Support for automated downloads of GeoIP Region, City, ISP and Organization databases (Frank Mather) * INADDR_NONE Patch for Solaris 9 (John Young) 1.3.2 2004-4-20 * Added support for Maxmind NetSpeed MinGW patch from Stanislaw Pusep I was re-compiling Geolizer (http://sysd.org/log.php#glzr) on Win32 so I firstly needed to put up-to-date Win32 compatibility of libGeoIP itself. Fortunately MinGW plataform evolved a lot since last time I used it to compile libGeoIP. I'm sending you the patch with changes required for libGeoIP to work on both Win32 and UN*X. UN*X behavior is unaffected. Now, detailed explanation of what I did at all: 1) Made correct header imports for both Win32 and UN*X. UN*X imports netdb.h & netinet/in.h and Win32 imports windows.h & winsock.h 2) Win32 gethostbyname() is only able to resolve hostnames, it can't convert "127.0.0.1" string to 32-bit IP address. Thus I added lookupaddress() function that safely resolves any string to IP address and replaced all gethostbyname() calls by it. 3) Database files were referenced by pre-compiled static strings. I malloc()ed buffers for file names so they can be changed "on fly". Thus, on Win32 version GeoIP.dat & other files are being seeked in the same directory as executable file or library. 4) Added README.MinGW file with brief explanation on how to get GeoIP working under MinGW system. 1.3.1 2003-11-11 * Check for stdint.h in autoconf (Sean Chittenden) * prevent the geoipupdate man page from trying to install itself directly in the system directory (Gyepi Sam) 1.3.0 2003-09-29 * Fixed includes to compile on Windows (Fabrice Colin) * Removed the _addr_to_num() calls from GeoIP_*_by_name() * _seek_record() optimizations (Maurice Cinquini)  1) Use a single buf ptr inside the loops.     Set to the stack buffer or the cached memory the start of the function.  2) Unroll the i=0,1 loop to allow constant folding.  3) Unroll the j loop for the common case of j = STANDARD_RECORD_LENGTH     (I've already done the above changes see attached function.)     With gcc -O2 calculating x[0] and x[1] for STANDARD_RECORD_LENGTH now     only takes 15 (was > 100) i80x86 instructions with 6 byte accesses of RAM. 4) only calculate x[0], x[1] when needed, may be a bigger win than the above since all the other optimizations above only reduced CPU instructions operating on CPU cached RAM. ! IMPORTANT API Change: Changed GeoIPRegion to have region in structure. Saves space and a malloc. Since GeoIPRegion.region is no longer a pointer but an in-structure array so test the first byte of region == 0 rather testing if the region pointer is NULL. (Maurice Cinquini) * Added GeoIP_assign_region_by_inetaddr which doesn't do any mallocs and made all other region APIs go thru it (Maurice Cinquini) * Replaced _h_addr_to_num() with ntohl() and removed _h_addr_to_num() (Maurice Cinquini) * Fixed bug when IP address not found in region rev1 database (Jason Linhart) * Added added extern "C" to GeoIPCity.h fixes problems when included in C++ library 1.2.2 2003-08-10 * Added support for GeoIP ISP Edition identifier * Fixed bug in GeoIP_database_info (Jason Linhart) * Added support for GeoIP AS Number Edition ! renamed GeoIP_org_by_* functions to GeoIP_name_by_* to reduce confusion since these functions are used by GeoIP ISP and GeoIP ASNum as well as GeoIP Organization * Added support for GeoIP Proxy Edition ! renamed GeoIP_country_id_by_* functions to GeoIP_id_by_* 1.2.1 2003-07-12 * Added GeoIP_record_id_by_addr and GeoIP_next_record functions * Added support for new GeoIP Region format, including Canadian Provinces 1.2.0 2003-04-26 * Added support for GeoIP City format revision 1, including dma code and area code * geoiplookup returns results from GeoIP Region, City, ISP and Organization databases * Standardized location for GeoIP Region, City, ISP and Organization databases * Added GeoIP_open_type to open database from default location for other dbs besides country * Added check to make sure that the appropriate database is loaded for each lookup method * Updated update code to check for first 12 characters of license key * Added GeoIP_country_continent array to lookup continent by country ID 1.1.9 2003-03-10 * merged windows patch into main code base (Kenneth R. Robinette) * Changed const int to #define for windows compatibility 1.1.8 2003-03-04 * Fixed bug with city database introduced in 1.1.6 1.1.7 2003-03-04 * Fixed bug introduced in 1.1.6 when run in GEOIP_STANDARD mode * Added test to test GEOIP_STANDARD 1.1.6 2003-03-03 * Added spec for building RPMs (Ryan Weaver) * Added support for 4byte records for Organization database * Changed Taiwan, Province of China to Taiwan 1.1.5 2003-02-10 * Added support for GeoIP Organization database 1.1.4 2002-12-30 * Cast number to int in _num_to_addr in geoipexport (Ralf S. Engelschall) * Removed printf debug statements from geoipexport * correct library build ordering (Ralf S. Engelschall) * ulong -> unsigned long (Sean Chittenden) 1.1.3 2002-12-24 * Added GeoIPUpdate.h to EXTRA_DISTS * Compile fixes for Solaris, FreeBSD (Michael McClennen, Corris Randall) * Handle NULL in printf in test-geoip-region 1.1.2 2002-12-16 * Added support for postal codes * Added geoipexport, program to export bit binary file to binary tree format and csv format * Split update code into separate library, GeoIPUpdate.la * Allow passing NULL callback to GeoIP_update_database function (Sean Chittenden) * Added geoipexport program, exports to CSV file * Added GeoIP_database_edition method * Changed DATADIR to GEOIPDATADIR 1.1.1 2002-11-07 * Fixed segfault issue with GeoIPRegion_delete * Handle test failures where lookup returns NULL more gracefully 1.1.0 2002-11-06 * Perform sanity checking before installing datebase using geoipupdate * Removed file locking, since we install file by renaming instead of writing to it. * Fixed geoipupdate to check for NULL return value * Added constants for different editions * Added O1 code for "Other country", used in per-country city editions * fixed multi-line string literals warning in test-geoip.c * Use enum constants for GeoIP_update_database values * Added GEOIP_CHECK_CACHE option (not working yet) 1.0.10 2002-10-28 * IMPORTANT API Change - Return NULL instead of '--' and 'N/A' Be sure to check the return value for NULL to avoid segmentation faults!!!! * Added callback to print messages from GeoIP_update_database * Moved GeoIPConfFile to geoipupdate.c * Changed databaseSegments to unsigned int (Chris Gibbs) * Fixed compiler warnings (Chris Gibbs) * API Change - GeoIPRegion region member set to NULL when no region available * Change short int to int (Chris Gibbs) * Added write/read file locking for GeoIPUpdate.c/GeoIP.c 1.0.9 2002-10-16 * removed -ansi from Makefile.am to avoid compile error on Solaris 8 * Compile fix for FreeBSD Stable (Kimura Fuyuki) 1.0.8 2002-10-05 * Included header required for *BSD (Akinori Musha) 1.0.7 2002-10-05 * Fixed compilation error with GeoIPUpdate.c 1.0.6 2002-10-04 * Moved update code into separate file * Added md5 checksums to update code * Fixed memory leak when running geoiplookup -v * Moved const RECORD_LENGTH to #define RECORD_LENGTH for Windows compatibility (Randy Kobes) * Cleaned up GeoIP_new code 1.0.5 2002-09-23 * Supports GeoIP Regional Edition * Macau is now "Macao" per ISO 3166-1 change * Romania "ROM" is now "ROU" per ISO 3166-1 change * Added #define for memcpy -> BSD's bcopy (Chris Gibbs) * Removed "private" functions from GeoIP.h 1.0.4 2002-08-27 * rewrote _seek_country to use loop instead of recursion for faster performance * Removed "orphan" nodes from demo database resulting in smaller size (Jason Linhart) * Moved changes for building windows DLL into separate patch * Fixed segfaults when passed malformed IP addresses 1.0.3 2002-08-26 * Added more changes for windows compatibility (Stanislaw Pusep) * Added benchmark program 1.0.2 2002-08-21 * Open database using "rb" for windows compatibility (Stanislaw Pusep) * Removed superfluous inet_ntop command (Stanislaw Pusep) 1.0.1 2002-08-20 * Fixed bug with resolving hostnames * More fixes for compiler warnings (Chris Gibbs) * Changed int to unsigned int in _is_ipaddr (Chris Gibbs) 1.0.0 2002-08-12 * Changed license to GPL * Don't perform Reverse DNS lookups on IP addresses * Only include getopt.h on Linux (OpenPKG patch) * Avoid the_license_key_str warning (OpenPKG patch) * Added license for March 2002 database 0.3.0 2002-08-04 * Added support for 'A2', Satellite Providers 0.2.8 2002-07-30 * Handle malformed input gracefully * Added section to README on Solaris workarounds * Added geoipupdate man page 0.2.7 2002-07-27 * Added section to README on automatic updates * link to socket library on solaris 0.2.6 2002-07-25 * optimized GeoIP_open (Chris Gibbs) * check for partial file read in GeoIP_open (Chris Gibbs) * optimized _addr_to_num() (Chris Gibbs) * changed write and read to send and recv for sockets * Only install GeoIP.conf and GeoIP.dat if not already installed 0.2.5 2002-07-22 * Added verbose option to GeoIP_update_database 0.2.4 2002-07-22 * Fix for GeoIP_update_database 0.2.3 2002-07-22 * Fixes for FreeBSD * All calls to malloc are checked for NULL pointer (Chris Gibbs) * Fixed spelling of "Kazakhstan" (Chris Gibbs) * Initialize cache_buf to NULL (Chris Gibbs) * More memory leak fixes (Chris Gibbs) 0.2.2 2002-07-18 * Added update database function * Fixed memory leak in GeoIP_new (Chris Gibbs) 0.2.1 2002-07-03 * Added support for anonymous proxies 0.2.0 2002-06-23 * Added new memory caching option for improved performance 0.1.7 2002-05-29 * Only add -lnsl for systems that support libnsl * Added decl for 3 letter country code array to GeoIP.h 0.1.6 2002-05-25 * Added 3 letter country code 0.1.5 2002-05-23 * Added -lnsl fixed compile errors 0.1.4 2002-05-11 * Fixed bugs in demo March 2002 database 0.1.3 2002-04-21 * Fixed bug related to signed int (Brian Grossman) * Better error handling when hostname not found * Fixed bug when netmask=32 for netblock 0.1.2 2002-04-20 * Added two new functions, GeoIP_country_id_by_addr and GeoIP_country_id_by_name. * Made GeoIP_country_code and GeoIP_country_name viewable outside of library, to be with with GeoIP_country_id_by_* functions. 0.1.1 2002-04-07 * GeoIP.h is now installed to includedir * constructor and destructor are now provided by GeoIP_new, GeoIP_open, and GeoIP_delete 0.1.0 2002-04-07 * Initial release