[zorp] Stacking programs doesn’t work and how to modify POST parameters?

thomas.wenz at gmx-topmail.de thomas.wenz at gmx-topmail.de
Mon Jul 7 15:57:28 CEST 2008


Hi,

Thanks for taking you so much time to help me!

Your idea with self.rerequest_attempts setting to 1 is fantastic! I tried it and it moves 
the stacking so much up like I want it! Now I can do exactly what I described with POST!

The problem left is that stacking is still not done on GET-requests. Somehow, your 
suggested change didn't do anything because it's an OR-clause and if any of these 
checks fails it enters the section and ends. 
If I put a comment around this whole if-section, it's a little bit better: the program gets 
executed but
a) it's then not executed at the same time like with POST and self.rerequest_attempts=1
    so it seems like the alternative path with blobs can only be used with POST. I tried
    changing the has_data value in the http_fetch_request function but it didn't help 
    (probably there's more needed).
b) it's then executed but still no data (= no headers) is passed so it's quite useless. There
    must be another check somewhere later in the program which prevents sending the 
    headers when there's no data part.


I just noticed another minor problem:
A connection takes quite long if I set forge_port to Z_PORT_EXACT or 
Z_PORT_GROUP. Between the "Initiating connection" and "Established 
connection" it takes more than 3 seconds. If I set 
"self.transparent_mode = TRUE" this gets really slow because then the 
connection seems to be not reused, if it's set to false it goes really fast 
(only the first request and if there was no request for some time take 
the 3 seconds). Why is this so? Does it wait for the other connection 
to somehow time out before it can use the same port? With 
Z_PORT_ANY it works flawlessly...


And a more cosmetical issue I found during the investigation of the 
connection problem:
When I attach an strace to a process with a stacked program I get 
a huge filte (18MB) with thousands of 
"close(229284) = -1 EBADF (Bad file descriptor)"
At one point this process then calls the stacked proxy and seems
to normally continue. Is this normal? I've attached the log of this 
process below.

Thomas Wenz


7415  clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xb6de3bf8) = 7416
7416  dup2(19, 0 <unfinished ...>
7416  <... dup2 resumed> )              = 0
7416  dup2(21, 1 <unfinished ...>
7416  <... dup2 resumed> )              = 1
7416  dup2(23, 3 <unfinished ...>
7416  <... dup2 resumed> )              = 3
7416  getrlimit(RLIMIT_NOFILE,  <unfinished ...>
7416  <... getrlimit resumed> {rlim_cur=250*1024, rlim_max=250*1024}) = 0
7416  close(4 <unfinished ...>
7416  <... close resumed> )             = 0
7416  close(5 <unfinished ...>
7416  <... close resumed> )             = 0

...

7416  <... close resumed> )             = 0
7416  close(24 <unfinished ...>
7416  <... close resumed> )             = -1 EBADF (Bad file descriptor)
7416  close(25 <unfinished ...>
7416  <... close resumed> )             = -1 EBADF (Bad file descriptor)
7416  close(26 <unfinished ...>
7416  <... close resumed> )             = -1 EBADF (Bad file descriptor)

....

7416  close(255999)                     = -1 EBADF (Bad file descriptor)
7416  execve("/bin/sh", ["/bin/sh", "-c", "/usr/bin/cat"], [/* 15 vars */]) = 0
-- 
Ist Ihr Browser Vista-kompatibel? Jetzt die neuesten 
Browser-Versionen downloaden: http://www.gmx.net/de/go/browser


More information about the zorp mailing list