On Thu, 2007-05-24 at 10:23 +0200, Gabor Burjan wrote:
Szia,
On Wed, May 23, 2007 at 11:00:01PM +0200, Viktor Tuska wrote:
Van lehetoseg nem "chunked" modban kuldeni a stream-et?
A forrast bogaraszva nem igazan talaltunk ilyen lehetoseget, egy tesztrendszeren a csatolt patch es policy segitsegevel sikerul lebeszelni a zorpot az enchunkingrol. Kerdeznem, hogy mennyire nyultam melle a patch-csel :), illetve hogy terveztek-e ilyen feature-t a kereskedelmi valtozatba.
Az altalad kuldott patch-csel az a problema, hogy csak akkor mukodik, ha a gyerek proxy nem valtoztatja meg a stream hosszat. Es ha megteszi, akkor a Content-Length fejlecben hibas hossz megy at, es a kommunikacio fennakad. A megoldas az, hogy a HTTP proxynak meg kell mondani, hogy mennyi _lesz_ a hossz, mielott a gyerek proxy elkezd felfele adatot kuldeni. Igy a HTTP rendes content-length fejlecet kuld. Ezt a 3.0-ban csak C-ben irt proxybol lehet elerni, valahogy igy: ZProxyResultIface *iface; iface = z_proxy_find_iface(self->super.parent_proxy, Z_CLASS(ZProxyResultIface)); if (iface) { z_proxy_result_set_content_length(iface, content_length); z_object_unref(&iface->super); } A 3.1-ben ugyanezt az API-t kivittuk a kulso program stackelesehez egy egyszeru protokollal (ugyanaz, mint amit a Zorp-ZCV hasznal). Tehat, 3.0-ban C-ben kell irni az gyerek proxyt ahhoz, hogy a HTTP ne chunked modban kuldjon, 3.1-ben pedig akar kulso programbol is meg lehet ugyanezt tenni. Csatolok egy shell scriptet, ami lekeri a beagyazo proxytol a hosszt, majd ugyanazt tovabbkuldi. a shell script max. tesztelesi celokat szolgal, nincs benne hibakezeles. latszik belole a protokoll, meg ki tudod probalni, hogy tenyleg megoldja-e a problemadat. -- Bazsi