> > I am posting this on both dansguardian and squid > > lists so that it can help > > anyone with the x-forwarded-for patch. > > > > Download squid-2.5.STABLE9.tar.gz and > > follow_xff-2.5.STABLE5.patch on /tmp > > Extract the squid tar file with: tar xvfz > > squid-2.5.STABLE9.tar.gz > > copy follow_xff-2.5.STABLE5.patch to > > /tmp/squid-2.5.STABLE9 > > cd to /tmp/squid-2.5.STABLE9 and execute: patch > -p0 > > < > > follow_xff-2.5.STABLE5.patch > > > > you should get the following errors: > > > > FedoraCore2[/tmp/squid-2.5.STABLE9]patch -p0 < > > follow_xff-2.5.STABLE5.patch > > patching file acconfig.h > > patching file bootstrap.sh > > Hunk #1 succeeded at 66 (offset 7 lines). > > patching file configure.in > > Hunk #1 succeeded at 1128 (offset 28 lines). > > patching file src/acl.c > > Hunk #1 succeeded at 2147 (offset 107 lines). > > patching file src/cf.data.pre > > Hunk #1 succeeded at 2144 (offset 29 lines). > > patching file src/client_side.c > > Hunk #2 succeeded at 185 (offset 2 lines). > > Hunk #4 succeeded at 3308 (offset 58 lines). > > patching file src/delay_pools.c > > patching file src/structs.h > > Hunk #1 FAILED at 594. > > Hunk #2 succeeded at 634 (offset 14 lines). > > Hunk #3 succeeded at 1621 (offset 2 lines). > > Hunk #4 succeeded at 1684 (offset 14 lines). > > Hunk #5 FAILED at 1697. > > 2 out of 5 hunks FAILED -- saving rejects to file > > src/structs.h.rej > > > > This means that two hunks (parts) of the patch > > failed to patch src/structs.h > > at around lines 594 and 1697. Now look at the > > src/structs.h.rej which > > should look like this: > > > > *************** > > *** 594,599 **** > > int pipeline_prefetch; > > int request_entities; > > int detect_broken_server_pconns; > > } onoff; > > acl *aclList; > > struct { > > --- 594,604 ---- > > int pipeline_prefetch; > > int request_entities; > > int detect_broken_server_pconns; > > + #if FOLLOW_X_FORWARDED_FOR > > + int acl_uses_indirect_client; > > + int delay_pool_uses_indirect_client; > > + int log_uses_indirect_client; > > + #endif /* FOLLOW_X_FORWARDED_FOR */ > > } onoff; > > acl *aclList; > > struct { > > *************** > > *** 1681,1686 **** > > char *peer_login; /* Configured peer > > login:password */ > > time_t lastmod; /* Used on > refreshes > > */ > > const char *vary_headers; /* Used when > varying > > entities are detected. > > Chan > > ges how the store key is calculated */ > > }; > > > > struct _cachemgr_passwd { > > --- 1697,1707 ---- > > char *peer_login; /* Configured peer > > login:password */ > > time_t lastmod; /* Used on > refreshes > > */ > > const char *vary_headers; /* Used when > varying > > entities are detected. > > Chan > > ges how the store key is calculated */ > > + #if FOLLOW_X_FORWARDED_FOR > > + /* XXX a list of IP addresses would be a > > better data structure > > + * than this String */ > > + String x_forwarded_for_iterator; > > + #endif /* FOLLOW_X_FORWARDED_FOR */ > > }; > > > > struct _cachemgr_passwd { > > > > As you can see the patch has found some 'issues' > on > > line 594 where it was > > expecting something that it did not find. No > > problem, just open > > src/structs.h with 'vi' and go to line 594 and > > locate the line: > > > > int detect_broken_server_pconns; > > > > which should be somewhere around there. > > now insert the following as described by the .rej > > file (remove the + which > > means ADD) > > > > #if FOLLOW_X_FORWARDED_FOR > > int acl_uses_indirect_client; > > int delay_pool_uses_indirect_client; > > int log_uses_indirect_client; > > #endif /* FOLLOW_X_FORWARDED_FOR */ > > > > so around line 594 you should now have: > > > > int detect_broken_server_pconns; > > #if FOLLOW_X_FORWARDED_FOR > > int acl_uses_indirect_client; > > int delay_pool_uses_indirect_client; > > int log_uses_indirect_client; > > #endif /* FOLLOW_X_FORWARDED_FOR */ > > int balance_on_multiple_ip; > > int relaxed_header_parser; > > int accel_uses_host_header; > > int accel_no_pmtu_disc; > > } onoff; > > acl *aclList; > > > > OK, let's now go to line 1697 (more or less since > we > > have just added a few > > lines around 594) > > locate the line: > > > > const char *vary_headers; /* Used when varying > > entities are detected. Chan > > ges how the store key is calculated */ > > > > which should be somewhere around there. > > now insert the following as described by the .rej > > file (remove the + which > > means ADD) > > > > #if FOLLOW_X_FORWARDED_FOR > > /* XXX a list of IP addresses would be a > better > > data structure > > * than this String */ > > String x_forwarded_for_iterator; > > #endif /* FOLLOW_X_FORWARDED_FOR */ > > > > so around line 1697 you should now have: > > > > char *peer_login; /* Configured peer > > login:password */ > > time_t lastmod; /* Used on > refreshes > > */ > > const char *vary_headers; /* Used when > varying > > entities are detected. > > Changes how the store key is calculated */ > > #if FOLLOW_X_FORWARDED_FOR > > /* XXX a list of IP addresses would be a > better > > data structure > > * than this String */ > > String x_forwarded_for_iterator; > > #endif /* FOLLOW_X_FORWARDED_FOR */ > > BODY_HANDLER *body_reader; > > void *body_reader_data; > > }; > > > > Alright, you are done fixing the broken patch! > now > > go back to > > /tmp/squid-2.5.STABLE9 and execute > > 'bootstrap.sh'. Do not worry about any warnings > or > > errors you may get. > > then run 'configure --help' and you should be able > > to see you new option > > --enable-follow-x-forwarded-for > > > > Just configure with your favourite options and run > > make. > > The same fix is not working for squid-2.5.Stable11. I think I need to change some more in structs.h. Pls help me what to be changed in structs.h? Sarav __________________________________ Yahoo! Mail - PC Magazine Editors' Choice 2005 http://mail.yahoo.com