|
Historie
C-SaCzech
vznikl během dubna a začátku května léta Páně tisícího devítistého
devadesátého šestého.
Tato stránka zachycuje změny v jednotlivých verzích a data release.
verze 2.1.9 (10.3.2002)
- dokumentace z velké části přepsána a upravena pro zpřehlednění;
je nyní také plně validní HTML 4.01 Transitional
- v parseru opraveny další dva případy, kdy se parametr isspace()
a toupper() nepřevedl na (unsigned char) a mohlo se tedy
použít záporné číslo na architekturách, kde char je defaultně signed
- parser chybně nezrušil jeden z vnitřních
příznaků tehdy, když dorazil na konec bufferu při čtení příkazu nebo tagu,
což vedlo k poškození
předávaného dokumentu (několik znaků bylo přepsáno jinými) - jedná
se o poměrně vzácnou chybu, bylo nutné splnit několik předpokladů,
aby se chyba projevila
- Apache: mod_ssl háček upraven tak, že se spustí vždy a ne jen tehdy,
když se uživatel autentizuje serveru; nyní tedy CSáček s mod_ssl funguje
správně i na anonymních serverech nepožadující autentifikaci. Je ale nutno
mít správně nastavenou konfiguraci serveru - viz
konfigurace mod_ssl_ s CSáčkem.
verze 2.1.8 (17.2.2002)
- META tag v xHTML tvaru (<meta ... />) je podporován -
lomítko a původní názvy parametrů jsou zachovány
- přidáno csacekTestJS:
pokud zapnuto (default vypnuto), CSáček
použije heuristiku pro uhádnutí, zda předávaný text/html
text není ve skutečnosti čistý JavaScript
- parser přegenerován novou verzí Bisonu - 2.18
- výstup z csacek_info je nyní validní HTML 4.03
(oveřeno validátorem W3C)
- zrušeno přepisování DOCTYPE (potřeba jen pro MSIE 3.0 a ten už
není používán
- při zpracování embedded JavaScriptu (kódu mezi <SCRIPT>
a </SCRIPT>) se vypne přepisování všech tagů, včetně
FONT
- mírná optimalizace memory managementu pro dočasnou paměť
- zajištěno, aby parametr při volání isspace(3) nebyl
záporný - mohlo vést k pádu modulu pokud tag obsahoval
české znaky
- hlavička Content-Length se posílá i při metodě HEAD -
nemusí být správně, ale jako informace je lepší než žádná hlavička
- verze 2.1.7 obsahovala chybu (zanechaný debug výpis), 2.1.8
ji opravuje
verze 2.1.6 (12.4.2001)
- ISAPI: oprav pád při poslání POST formuláře bez dat, CSáček je nyní
také opatrněji detekuje začátek nového požadavku; CSáček tak
funguje na IIS 4.0
(pomoc: Jaromír Ocelka)
- configure: pro převod na velká písmena použij
tr abcd...z ABCD...Z misto tr [a-z] [A-Z] - tu
druhou formu některé implementace tr neznají
(našel: Libor Bubík)
- cstools: přidán "stupeň" (DEGREE SIGN) a paragraf
(SECTION SIGN)
- oprava kódu počítajícího priority v Accept-Charset, což
mohlo vést k výběru špatného kódování
(Martin "Marji" Čermák)
- hádání uživatelem podporovaného kódování se řídí hlavičkou
Accept-Charset i tehdy, když klient v
Accept-Language poslal cs
(Martin "Marji" Čermák)
- URL se opravuje i u atributu SRC tagu SCRIPT
(doporučil: Daniel Kafka)
tag znehodnotilo
- configure: přidán parametr --with-apxs, který umožňuje
explicitně zadat celou cestu k apxs, pokud není v cestě; také byl
mírně upraven algoritmus hledání apxs, nyní se dívá
také do několika často používaných adresářů, které nemusí být
v cestě (opravu poslal Ivo
Panáček)
- součástí distribuce je nyní mod_czech kompatibilní
soubor cestina.html (vyrobil a dal k dispozici
Ivo Panáček)
verze 2.1.5 (3.5.2000)
- Apache + mod_ssl: při sub-requestu se nyní dává zpět SSL kontext,
aby mod_ssl mohl udělat příslušná ověření; to mimo jiné znamená, že
direktiva SSLRequireSSL funguje tak jak má
(našel Petr Šimek)
- opravena další chyba zpracování uvozovek/apostrofů v odkazech
(našel Robert Janáček)
- Apache: na csacek_info stránce se vypisuje i to, jestli byl
modul zkompilován s podporou EAPI (podpora EAPI je nutná pro korektní
funkci CSáčku s mod_ssl)
- Apache: opravena chyba zanesená při úpravách ve verzi 2.1.4 - některé
konfigurační parametry byly pro virtuální servery ignorovány
a vždy se použily globální hodnoty
(našel Pavel Kalián)
verze 2.1.4 (31.3.2000)
- oprava přepisování hlaviček Set-Cookie - při určitém tvaru
cookie CSáček alokoval méně paměti než potřeboval a mohl
přepsat kus náhodné paměti, což vedlo nejčastěji k brzkému pádu
serveru (našel:
Tomáš Zeman)
- přidáno FAQ
- seznam nakonfigurovaných CSáček serverů se udržuje jako globální
(předtím se pro Apache sdílel jen seznam virtuálních serverů);
direktiva csacekServers může být použita jen v konfiguračních
souborech serveru (tedy nesmí být v .htaccess)
- cstools: opraven překlad Ú (U s čárkou) a Ů (U s kroužkem) v kódování
bratří kameníků (oprava:
Tomáš Churavý)
- při úpravě hlavičky Accept-Charset se jméno aktivní
části (viz PART) přidá jen tehdy, pokud se nerovná prvnímu
tokenu
- implementována záplata na podivné chování
PHP4v3
- znak označující CSáček "tag" (defaultně ?) lze
změnit pomocí parametru --with-cmdtag skriptu
configure
- PART: opraveno zpracování atributu OTHER
- zrušena vlastnost CSáčku, kdy se v URL typu
http://server/.XXX/neco/ část XXX vzala
jako název části a předalo se URL http://server/neco/ -
není užitečná z způsobuje problémy (na chybu upozornil
Petr Linke)
- CGI: server Zeus CGI skriptům tvrdí, že klient podporuje HTTP/1.1
i když to tak není (SERVER_PROTOCOL je vždy HTTP/1.1)
- pokud CGI CSáček jede pod Zeusem, neveří mu v tomto ohledu ani slovo
a vždy použije jen vlastnosti HTTP/1.0
- doc: přidán velmi stručný soubor INSTALL - slouží
pro odpíchnutí a informaci, kde lze najít více
- opravena chyba, kdy pro určité stránky CSáček předal na výstup
jen jejich část (s nalezením chyby pomohl
Honza Dušák a
Radek Vybíral)
- při parsování dokumentu na CSáček příkazy se ošetřují i případné
chyby v HTML kódu - jako konec příkazu se vždy
povačuje první nalezené >, i když je v uvozovkách
- při přepisování URL se názvy HTML tagů do výstupu píší ve stejné
podobě, jako byly uvedeny v originále
- změna průběhu hádání podporovaného kódování při implicitním
překódování - Accept-Language se dává větší
váha, Accept-Charset se parsuje správně tak,
aby se použilo kódování s nejvyšší prioritou (iso-8859-2
je stále preferováno) - založeno na diskuzi
s Petrem Součkem
- Poláci, Maďaři dostávají dokumenty také v iso-8859-2,
jako Češi a Slováci
- Apache, ISAPI: pročištěn kód spravující konfiguraci CSáčku
- změna struktury csa_params_t - místo sady "flagovitých"
atributů se používají bitové příznaky v jediném atributu flags
- debug pod MS Windows: místo čísla procesu se používá náhodné
číslo - PID se pod Windows příliš rychle recykluje
- CSA_USE_CHARSET už není nastavitelné, charset
se v hlaviččce Content-Type posílá vždy - i tehdy,
pokud je výstupní kódování US-ASCII
- cstools: přidány aliasy lat, iso a koi - používá
je mod_czech a usnadní se tak přechod na CSáček
(oprava: Zdeněk Šindelář)
verze 2.1.3 (25.2.2000)
- změna licence na BSD-like
- Apache: CSáček funční i se Strongholdem (testováno na Stronghold 2.4.2
pro NetBSD)
- URL se v sekcích <SCRIPT> nepřepisuje - CSáček
má problémy s JavaScriptem a ostatními klient-side skripty; tohle je
dočasné řešení, než bude implementována opravdová oprava
- pročištěn kód vyhledávající CSáček příkazy, je nyní optimalizován
pro obvyklý případ, kdy nalezená sekvence <--
nebo <? neoznačuje CSáček příkaz
- zoptimalizován a pročištěn kód starající se o překódování řetězců
- opravena chyba v csa_decodequery() - pokud vstup obsahoval
sekvence %XY, posunul se špatně ukazatel pozice
a kód se pokoušel číst za koncem předaného řetězce
- ISAPI: pročištěno zpracování vstupních dat (adaptace na změny
csa_decodequery() v minulé verzi)
- opraveno vypisování seznamu CSáček serverů v csacek_info
- configure: jména parametrů a vypisované zprávy poangličtěny,
mírné změny názvů (podrobněji viz ./configure --help);
jako název defaultního kódování serveru lze použít jakýkoli
název podporovaný v příkazech
MYCHARSET nebo
META tagu
- mezi přípustné názvy kódování přidáno iso8859-2 a
iso8859-1 - tato mutace správných MIME názvů se
občas používá
verze 2.1.2 (25.1.2000)
- CSáček má své logo!
- Apache: přidána podpora mod_ssl
- Apache, CGI: odstraněny problémy s uploadem souborů, nyní funční
(našel: Michal Krause)
- ISAPI: opraveny problémy s autentifikací typu NTLM
(našel: Ladislav Kubeš)
- přepsán a zoptimalizován kód udržujíjí seznam CSáček serverů,
rychlost vyhledávání pro seznam o velikosti 1000 se zvýšila
asi 50-80x, pro 50 serverů asi 6-10x
- Apache: opravena chyba s apxs - apxs se nevolalo
ani v případě, že ho configure našel
(našel: Radek Vybíral)
- hlavička Vary se teď už opravdu posílá tehdy, když má
(našel: Hynek Med)
- přidána podpora XML tagu XML - pomocí tohoto tagu se
indikuje mimo jiné použité kódování znaků; CSáček
použije jednak pro určení, v čem je daný dokument
napsán, druhak ji přepíše tak, aby odpovídala
kódování, do kterého se dokument převádí
- CSáček části: pokud název části nebyl uveden v URL předávaného
dokumentu, necpe se ani do přepisovaných URL
- opravena chyba zpracování Range v případě, že klient
podporuje HTTP/1.1 a/nebo kompresi
- dokumentace: dopsán podrobný průvodce instalací CSáčku
- Apache: nyní je možné modul používat se zapnutým laděním
(--with-debug) - csa_debug_register_cleanup()
chybně nezadalo child_cleanup, což vedlo k dereferenci
nulového ukazatele např. při spouštění CGI
- přidán CSáček příkaz csacekServers,
syntaxi má podobnou jako stejnojmenná konfigurační direktiva
- pročištěna struktura csa_params_t, význam jednotlivých
"flagovitých" atributů převzal atribut flags
- csa_decodequery() zoptimalizováno a vrací nyní vždy
řetezec o stejné délce jako byl ten původní; umožňuje to
rapidní zjednodušení volajícího kódu (zejména v ISAPI modulu) -
z Apache modulu byl nyní zbytečný kód odstraněn, z ISAPI ještě ne
- úpravy kódu tak, aby byl zkompilovatelný pokud možno bez warningů
i v případě zapnutí velmi přísných kontrol kompilátoru gcc;
příslušné parametry se při kompilaci CGI použijí tehdy,
pokud se skriptu configure dá parametr --with-debug
verze 2.1.1 (15.11.1999)
- opravena fce csa_strcasestr() aby se hledalo opravdu hledalo
nezávisle na velkých/malých písmenech ve všech případech; chyba se
projevila například tak, že Apache nebo ISAPI CSáček URL typu
http://nekde/guess/cosi.html přesměroval na
http://nekde/guessISO-8859-2/cosi.html místo na
http://nekde/ISO-8859-2/cosi.html.
Našel Jakub Rosa.
- ISAPI: opravena potencialní chyba při předávání chunkovaných dat -
pokud server posílal hlavičky na několikrát a Transfer-Encoding
nebylo až v té poslední dávce, jádro CSáčku považovalo data
za nechunkované
- Apache: direktiva csacekChangeURL nyní funguje.
Opravu poslal: Pavel
Krebs
- při přepisování META tagu se použijí stejné uvozovky jako byly
ve zdroji; také opravena chyba ve vypisování atributu
HTTP-Equiv, kde jeho hodnota se neukončovala uvozovkou
- ISAPI, Apache: pokud na začátku URL byl jakýkoli podřetězec
guess, whichcode nebo __CHARSET__,
bralo se to chybně jako označení cílového kódování/akce;
CSáček při následném zpracování zahlásil "Bad output
code name".
Našel Jakub Rosa.
- ISAPI: expirující verze psala do Event Logu řetězec
991026:991126 nebo podobný; jednalo se o omylem zanechaný
ladicí výpis
- CGI: při subrequestu se nyní používá HTTP/1.1 a v odpovědi serveru
se nyní posílají všechny hlavičky i tehdy, zpracovává-li se
HTTP/0.9 požadavek - nyní HTTP/0.9 funguje proti Apache serveru
i v případě, že požadavek jde přes CGI CSáček
- CSáček nyní posílá hlavičku Vary - nutné proto, aby případná
proxy keš věděla, podle čeho se odpověď mění a klientům nabídla
pro ně vhodnou verzi dokumentu.
Našel Hynek Med.
- překódovávají se i chybové odpovědi od serveru
- Apache: opravena chyba při použití chunked kódování (tj. proti HTTP/1.1
klientům), kdy se chunked odpověď nezakončovala sekvencí
0\r\n\r\n.
Našel Patrik Rak.
- Apache: použití direktivy csacekRecodeInput nyní
nezpůsobí pád serveru při čtení konfigurace
- Apache: opraveno zacyklení v případě, že HTTP/1.1 klient
požádal o dokument delší
než X_CSA_OUT_BUFLEN_CHUNK (tj. 8150) bajtů
- úprava dokumentace (INSTALL): defaultní RedHat konfigurace Apache používá
direktivy ClearModuleList a AddModule,
pokud má CSáček jako modul fungovat, je třeba na příslušné
místo přidat direktivu AddModule mod_csacek.c,
jinak CSáček není aktivní (a tedy "nefunguje")
- při přepisování tagů se použijí uvozovky nebo apostrofy tak, jak
bylo uvedeno ve zdroji místo toho, aby se vždy
použily uvozovky - znamená to, že např. následující
JavaScript kód:
val = "<A HREF='http://nekde/neco.html'>"
je platný i po překódování CSáčkem
verze 2.1.0 (23.9.1999)
- CSáček nyní funguje i jako ISAPI modul
- Apache: pokud je na systému k dispozici apxs, modul se
s jeho pomocí rovnou i zkompiluje
- plná podpora HTTP/1.1 uvnitř CSáčku, včetně podpory Range
a chunked kódování; CSáček také HTTP/1.1 klientům posílá
data dokumentu průběžně, což šetří paměť i čas
- Apache, ISAPI: nová direktiva csacekImplicitWork - pokud se vypne,
CSáček pracuje jen v případě, že kódování bylo explicitně
určeno (tj. požadované URI bylo typu .../toXXX/...)
- Apache, ISAPI: nová direktiva csacekServers, direktiva
csacekServer zrušena
- překódovává se cokoli, co má Content-Type začínající
na text/ - kromě text/html se všechny
takové dokumenty zpracovávají jako by byly typu text/plain
- zrušen "příkaz" typu <?proměnná?> - praktické
využití bylo jen pro whichcode (tam se to nyní dělá jinak)
a jeho
podpora zmanenala poměrně o dost víc práce při zpracování CSáček
příkazů
- přidána základní podpora azbuky - CSáček umí překódovávat mezi
KOI8-R, ISO-8859-5, windows-1251
a CP866; podpora převodů azbuka <-> latinka
a azbuka <-> Unicode bude přidána v 2.1.1
verze 2.0.9 (13.9.1999)
- META s označením kódování se nyní neruší, pouze se parametr
charset přepíše na správnou hodnotu - MSIE naštěstí
při ukládání (Save) dokumentu při případném převodu do jiného
kódování přepisuje i META tag
- překódovávání dat serveru: pokud vzorek vypadá na iso-8859-1,
pokračuje se v hledání - může se jednat o text, který jen náhodou
obsahuje platné iso-8859-1 znaky, ale jedná se ve zkutečnosti
o text v iso-8859-2; např. tehdy, když text obsahuje
jen znak 'ť' - v iso-8859-1 je na stejné pozici
ve znakové sadě jeden druh apostrofu
- Apache: při překódování dat od klienta se neupdejtovala hodnota
vstupní hlavičky Content-Length, což mohlo
vést k zajímavým efektům v případě, že tuto hodnotu někaterý
modul používal k určení celkové délky vstupních dat; např. u PHP
to vedlo k tomu, že se ke vstupním datům přidávalo náhodné "smetí"
díky moc zejména Michalovi Krause
za neocenitelnou pomoc při zjišťování, v čem je vlastně chyba
- přidána podpora několika dalších windows znaků: left single quotation
mark, right single quotation mark, right double quotation mark
(Petr Snajdr)
verze 2.0.8 (31.8.1999)
- starší verze mod_html padala, pokud odpověd od CGI skriptu
neobsahovala Content-Type - CSáček proto posílal
jako Content-Type posílal text/plain
v případě, že v původní odpovědi nebyl specifikován;
nyní upraveno tak, aby se to dělalo jen u (Fast)CGI
mutace a když opravdu CGI běží pod serverem s mod_html
aktivním
- hádaní kódování a jazyka při implicitním překódovóní:
pokud klient má sk nebo cs
mezi preferovanými jazyky a neposlal Accept-Charset,
pošli mu dokument v iso-8859-2 ->
eliminuje se z velke casti potreba delat DNS lookup
- Apache-SSL: novejsi verze (minimalne od verze 1.29) uz neni treba
patchovat, staci v apache_ssl.c
nastavit SSL_IS_OPTIONAL na TRUE
- z hlaviček If-Modified-Since se musí odstraňovat
nestandardní parametr length, který používá MSIE -
CSáčkem předaný dokument může mít jinou délku, než je
fyzická velikost dokumentu a zbytečně se dokument předává znovu
i tehdy, když se nezměnil
- opraven problém s kompilací pod AIX 4.2 nativním IBM kompilátorem
verze 2.0.7 (13.7.1999)
- opraven nefunkční příkaz csacekServer:
jméno serveru při vkládání do seznamu CSáček serveru
nezkopírovalo do "trvalé" paměti a nechalo se zkopírované
z dočasného poolu; díky tomu se později při testování
hodnoty mohl pointr odkazovat na nějaké znovu využité
místo a to mohlo obsahovat prakticky jakákoli data, pravděpodobně
už však ne to původní jméno serveru; za určitých okolností
to mohlo způsobit i pád CSáčku
tato chyba neměla žádný vliv na direktivu csacekServers
v konfiguraci serveru
- opravena stará chyba v csa_DocParts() - při použití PART
ve tvaru <? PART xx=yy OTHER=neco ?>
se při platném OTHER
jeho text vypíše jen poprvé nebo po <? PART ALL ?>
- přepisování URL: neni-li v URL za CSáčkem uvedeno URI, připiš tam
URI aktuálního dokumentu vč. QUERY_STRING
- lze využít při odkazu na dokument
v jiné jazykové verzi nebo třeba pro whichcode
(v efektu je tato změna
obdoba lampovského select až na to, že nepotřebuje,
aby klient posílal hlavičku Referer)
- cstools: opravena velmi stara chyba v cstools_guess_charset()
- pokud v textu byly nějaké CSáčkovi neznámé znaky,
při procházení cstools_map[] mohl číst za koncem pole,
což v závislosti na OS nemuselo mít žádný následek
nebo mohlo způsobit pád CSáčka (objeveno při ladění ISAPI filtru)
- cstools: do tabulek přidán znak apostrof - ne ten klasický ', ale
ten, vyskytující se v iso-8859-[12] a windows-1250 na pozici 180
- Apache: zoptimalizováno zpracování dat při POST, nyní
méně náročné na paměť
- komprese: dává se přednost deflate před gzip
- překódovávání dat od klienta do kódování serveru lze přepínat
konfigurační direktivou, nastavení při kompilaci se používá
jako default
- zoptimalizováno překódovávání uživatelských dat
- csacek_info předěláno, mimo jiné vypisuje konfiguraci platnou
pro dané URL, informace lépe setříděny
- zlepšena podpora přepínání jazykové varianty - pokud URL obsahuje
.../to.XX/... nebo .../toGUESS.XX/...
a uživatel si vybral nějaké určité kódování, ta CSáčkovská
část se přepíše tak, aby zachoval uživatelův výběr kódování
- CSáček na MS Windows: defaultní kodování změněno na windows-1250,
samozřejmě lze změnit v konfiguraci (pro CGI jen přímou editaci
NT/NTcsa_config.h a rekompilací)
- User-Agent se nyní nijak nepřenastastavuje - zbytečně
to zaneřádí logy
- překódovávání dat od uživatele: opravena chyba
v cstools_guess_charset(), která způsobila,
že data obsahující znak "nový řádek" nebo tabelátor,
se považovala za binární a nepřekódovala se
- opravena chyba v csa_setitem(): za určitých okolností
se mohlo zacyklit (nedělalo problémy v současném kódu, projevilo
se až při vývoji ISAPI CSáčka)
- whichcode_template.html: v anglické verzi opraveno několik
gramatických chyb
- csa_init_params(): pokud je cfg NULL, použij csa_cfg_def -
také opravuje známou chybu CSáčku 2.0.6, při které CSáček
hlásil "Bad default source code name"
- Apache: opraveno předávání Set-Cookie, nyní se předájí správně
všechny bez duplikací
- zdrojový kód nyní testován lintem, který objevil několik
potenciálních chyb a write-only proměnných
- opraveno csa_is_csacek_server(): nyní opravdu funguje
přepisování URL na ostatní CSáček servery
- csa_process_headers() - mirná optimalizace: nezpracovávej
hlavičky, ktere stejně nebudou předány klientovi
verze 2.0.6 (24.2.1999)
- pokud není výstupní kódování určeno explicitně a hádá se,
použije se iso-8859-2 pro klienty, kteří nespecifikovali
podporované kódování a chtějí dokument v češtině
- Apache: POST data se předávají korektně i v případě, že
je vypnuté automatické překódování uživatelského vstupu
do kódování serveru
- opravena chyba v převodu do Unicode (UTF-8), kód mírně
zoptimalizován
- při převodu z windows-1250 do jiného kódování se převádí znaky
copyright sign, trade mark sign a
registered sign do příslušné HTML/textové podoby;
do překódovacích tabulek
přidána podpora pro znak multiplication sign
- zoptimalizováno "hádání" uživatelem podporovaného kódování/jazyka
(eliminován DNS lookup v případě, že se už z hlaviček
uhodne podporovaný jazyk a znaková sada),
kód pročištěn a zčitelněn
- zoptimalizován kód pro úpravu URL
- zrušen banner (byl to HTML komentář, který CSáček vpisoval
do předávaných HTML dokumentů)
- opravena poměrně stará chyba ve zpracování hlaviček vrácených
sub-requestem - na jednom místě se kopírovalo o jeden znak
méně než mělo, takže například hodnota hlavička
Content-Type: text/html; charset=iso-8859-2
se pochopila jako text/htm a dokument se pak
vůbec nekonvertil
- komprese: kosmetické změny inicializačního kódu, žádné funční
změny
- ošetření chyb klientů: MSIE 3.0 nepoužije "české", tj. CE
fonty pro fonty explicitně definované pomocí tagu
FONT, pokud dokument není ve windows-1250;
CSáček nyní při převodu do jiného kódování než
windows-1250 upravuje <FONT FACE=...>
tak, aby obsahovalo nejdříve CE variantu
- ošetření chyb klientů: MSIE 3.0 nezobrazí dokument, pokud
tento má vyznačené kódování v hlavičkách a obsahuje
tag <!DOCTYPE> s uvedeným URL
na použité DTD; CSáček nyní to URL odstraňuje, aby
to fungovalo i přes proxy
verze 2.0.5 (15.11.1998)
- patch release - stabilní verze, doufejme už poslední v řadě 2.0.X
- porty: použití alloca(3) nyní portabilnější, CSáček
nyní funguje i na systémech bez (fungujícího) alloca(3)
- Apache: pod Apache 1.1 nyní modul funguje
(v kódu se používal Apachem 1.1
nepodporovaný návratový kód 301 Moved Permanently)
- (Fast)CGI: opraveno dublování hodnoty Content-Length
při přeposílání POST dat
- opraveno dublování znaku '=' v URL (chyba zavlečena při opravě chyby
s rovnítkem při zpracování parametrů typu jméno=hodnota);
při té příležistosti přepsán kód kolem do mnohem čitelnější
podoby
- CSáček lze nyní zkompilovat také pod AIX 4.2; získal jsem
nový přístup na RS6000 stroj s AIXem, takže je to nyní jedna
z podporovaných platforem
- CSáček lze nyni zkompilovat i pod HP-UX (testováno na HP/UX 10.20
s K&R cc); bohužel nemám stálý přístup k systému s HP/UX
verze 2.0.4 (30.10.1998)
- patch release
- jedna velmi (alespoň půl roku) stará chyba - při zpracování
parametru CSáček příkazu ve tvaru jméno=hodnota
se příkaz špatně rozeznal a neprovedl pokud hodnota
nebylo v uvozovkách a obsahovalo rovnítko
- aby se upravoval obsah HTML tagu META, A,
BODY a FORM, musí být v dokumentu opravdu
uvedeny jako HTML tag; předchozí implementace umožňovala, aby byly
uvedeny i v HTML komentáři (<!-- a -->),
což mohlo někdy vadit
- Apache: opraven kód tak, aby modul opět fungoval i pod Apache 1.1
- (Fast)CGI: při předávání dokumentu přímo ze souboru
se špatně nastavil příznak, zda se jedná o HTML dokument -
byl vždy false (má význam jen pro vypisování CSáček banneru)
- přepisování URL nefungovalo korektně, pokud přepisované URL už
obsahovalo CSáček a začínalo na csacekIgnorePrefix
(defaultně /cgi-bin)
- plain UNICODE opravy: odstraněna chyba při překódování do
plain unicode (tj. klasického 2B zapisu); banner a URL
při automatickém přepisu URL se nyní před vložením
do výstupu překódují
- úprava zacházení se seznamem CSáček serverů - pokud není
u direktivy csacekServer zadán port, chápe se to jako
kterýkoli port - má význam pro automatické přepisování URL
- Netscape a komprese: v NC 4.5b2 je chyba, která způsobí, že
za určitých okolností se místo dokumentu zobrazí prázdná
stránka; tento problém se dá obejít například tak, že
hlavička Via má délku jakéhokoli tokenu maximálně
rovnu 60 bajtům
- Apache: opraveno zacházení s hlavičkami Connection
a Keep-Alive, téměř nikdy by nyní server neměl
posílat klientovi požadavek o uzavření spojení při
Keep-Alive (tj. Connection: close)
ani při předávání dynamických dat
- komprese: chybně se kompresovalo vše a ne jen text/html a text/plain;
pod Apache toto "vše" znamená text/html, text/plain a dynamicky
generovaná data; za určitých okolností se na začátek dat
připsala inicializační hlavička komprese, ale obsah se
nekompresoval --> data se pokazila
- __LAMPACHARSET__ se nenahrazovalo správnou hodnotou,
pokud se používalo implicitní kódování (tj. když URL bylo bez
/toXXX)
- Apache: modul nešlo použít pod Apache 1.3X (na jednom místě
bylo použito
table_get() místo ap_table_get())
verze 2.0.3 (13.10.1998)
- patch release
- opravena chyba 2.0.2, kdy CSáček překódovával vše (a ne jen
text/html a text/plain)
- do seznamu nazvu kodovani přidáno "ISO Latin 1" a "ISO Latin 2" -
to druhé je časté (defaultní ?) nastavení preferovaného
jazyka v Lynxu
- cstools & Apache: chyba v kódu měla za následek, že i řetězec
pouze částečně odpovídající nazvu kódování se bral jako platný
match; CSáček tak mohl zbytečně "ořezávat" URL před předáním
requestu dále Apache rutinám a perfektně platné URL najednou
nefungovalo
- dokumentace: v části Historie u 2.0.2 přepsána do háčkované češtiny,
dodán uzavírající </TT> tag
- díky použití neinicializované proměnné se na některých architekturách/OS
místo stránky jako HTML zobrazil dokument jako text spolu s částí
hlaviček; nyní se vše zobrazuje korektně kdekoli
verze 2.0.2 (11.9.1998)
- patch release
- definitivně (doufejme) opraveno zacyklení kódu starajícího se
o "nadějné"
zbytky řetězce začínajícího na "_" v pracovním bufferu
- Netscape servery: "správné" jméno virtuálního serveru se
získávalo z SERVER_URL; to může obsahovat i číslo
portu, s čímž se nepočítalo; nyní se na analýzu SERVER_URL
používá csa_parse_url()
- Apache: Linux (a možná další OSy): kód předpokladal, ze rewind()
udělá implicitní lseek() na začátek souboru, i když
představa stdio o streamu je, že nebyl měněn - což vadí,
protože se na několika místech zapisuje do souboru přes deskriptor
(Apache kód, ne přímo CSáček) -
výsledek byl, že na Linuxu se místo dokumentu vrátily špatné
hlavičky a žádné tělo;
nyní se místo rewind() volá lseek(), takže
to funguje korektně všude (a ne jen na BSD systémech)
- opraveno nefungující PART v případě, že jmeno CGI skriptu
mělo příponu, nepatřící do PART - například .cgi
nebo .exe (fatální na NT serverech jedoucích pod IIS)
- cstools: opravena mapa x-mac-ce (prohozené I acute a I circumflex,
špatný kód pro division sign) a cp852 (prohozené I acute a I
circumflex); opraveno překódování UTF-->8bit kodování (kód
nezvládal ciste 8bit znaky)
- čistě implementována podpora HTTP/0.9, HTTP/0.9 klientům se nyní
neposílají hlavičky
- přidána podpora URL typu http:/path/, používané
Mrkvosoftem (a podporovane také Netscape)
- WNT: urychlení kompilace pod MSVC++ použitím speciálních konstant
pro preprocesor
- W32: distribuční Makefile a copy_csacek.bat
nyní funguje také pod W95
- Apache: CSáček je nyní defaultně _zapnutý_, tj. pokud nemá
být aktivní, je ho třeba explicitně vypnout
verze 2.0.1 (21.6.1998)
- patch release
- opraveno zacyklení při určitém výskytu retězce __ v dokumentu,
problém s whichcode (vypisování provedených příkazů PART
do výstupu), CGI CSáček lze nyní bez problémů zkompilovat při
použití metody HTTP vyzvedávání dokumentu, __CHARSET_ se nyní
nahrazuje správnou hodnotou i při implicitním hádání vystupního
kodování
- specialně je ošetřeno, jestli klient žádá o dokument pomocí HEAD
a pokud ano, tělo se vůbec neposílá; Apache si to bohuzel
neošetřuje (alespoň ne ve verzi 1.2.6)
verze 2.0 (3.6.1998)
Během téměř osmiměsíční práce byl kód takřka kompletně
přepsán a byla přidána podpora FastCGI a Apache. CSáček je
možno bez problémů přeložit na NetBSD, Linuxu, Solarisu,
IRIXu i MS Windows NT - a díky nasazení GNU autoconf by
měl být CSáček bez větších problémů zkompilovatelný
i na kterémkoli jiném modernějším Un*xu.
CSáček nyní vždy posílá hlavičku
Content-Length a pokud to klient zvládne, textové dokumenty kompresuje.
Byla přidána podpora Unicode ve formě UTF-8.
Je podporováno vyznačení kódování dokumentu pomocí tagu META.
Příkazy CSáčku jsou nyní
implementovány čistě, s použitím lexikálního analyzátoru. Mohou
nyní být na několik řádků a může jich být na jednom řádku i víc.
Je také možné, aby na jednom řádku byl příkaz a zároveň HTML text.
Při tom všem CSáček funguje rychleji -- CGI CSáček 2.0b1 je
přibližně 1.2x - 2x rychlejší než CSáček 1.3.5.
verze 1.3.4 (listopad 1997)
- patch release - jen opraveny chyby nalezené ve verzi 1.3.3
verze 1.3.3 (červen 1997)
- patch release - jen opraveny chyby nalezené ve verzi 1.3.2
- označení verze přesunuto do samostatného souboru version.h
verze 1.3.2 (únor-březen 1997)
- CSáček byl plně naportován na NT
- DECODEQUERY je nyní doporučená volba
- opravena chyba, kdy se pri určitém tvaru příkazu BAR CSáček
zacyklil
- opravena chyba s připisováním znaku ^Q do QUERY_STRING při
určité délce předaného QUERY_STRING
- opravena chyba dealokace pole ve freecmdarr() (mohla se
projevit u příkazů jako je např. PART, tj. těch, které mohou
mít víc parametrů)
- opravena chyba v connect_server() - špatné mapování
adresy na IP adresu (projeví se pokud CSáček
nebyl zkompilován s LOCALHOSTHACK)
- při kompilaci je možno zadat seznam přípon označujících
soubory, které se mají vždy kódovat metodou http
- CSáček filtry byly odstraněny a nadále nejsou podporovány; pokud
bude poptávka, snad se jednou zas objeví v jiné formě
- RESTRICTDOMAINS a MULTIPART bylo sloučeno dohromady
pod hlavičkou MULTIPART
- je-li aktivní NOCODE, příkazy PART, DOMAIN
se ignorují
- byly rozšíženy možnosti definování lišty s nabídkou kódování
přímo v dokumentu; lze dynamicky měnit hlavičku české
i anglické verze, závěr a pojmenování linky na volbu pomocí
whichcode
- z CSáčku byl odstraněn kód, starající se o SSI; nechává se nyní
zcela na straně serveru
- volba NPH spolu se souvisejícím kódem je také minulostí
- pokud požadované URL ukazuje na adresář a nekončí na /,
CSáček klienta přesměruje na URL/
verze 1.3.1 (únor 1996)
- interní velmi chybová verze, nebyla dána veřejně k dispozici
verze 1.3 (srpen-listopad 1996)
- podpora SSI a shtml
- možnost více defaultních souborů (tzn. souborů, které se
poskytnou pokud se zadá jako požadovaný dokument jméno adresáře)
- u kódovaných dokumentů předáván parametr "charset" u
Content-type
- podpora autorizace přístupu
- zavedení CSáček filtrů
- optimalizovány nároky na paměť - na mnoha místech odstraněny
statické buffery, nahrazeny pointry a dynamickou alokací
- animované GIFy zůstávají animované i po dokončení první smyčky
- zjednodušena struktura funkcí, opraveno mnoho drobných chyb,
nejdůležitější asi správný přenos obrázků, předávání správného statutu,
fungující podpora metody POST a PUT,
zpracování hlavičky If-Modified-Since, uděláno více "blbuvzdorné",
všude kde se může vyskytnout chyba je detekována a ohlášena,
a mnoho dalšího
- možnost zjištění zakompilované konfigurace CSáčku (?csacek_report)
verze 1.23 (začátek června 1996)
- dost chybový, doporučuji když tak jen vybrat opravenou
verzi cstools.h
- podpora skriptů volaných metodou POST
- lépe zachovává HTTP hlavičky
- opraveno chybné překódovávání některých znaků
- opraven whichcode.sl
verze 1.22 (konec května 1996)
- možnost nastavení (téměř) jakéhokoli tvaru automaticky generované
lišty s nabídkou kódování přímo v dokumentu
- podpora vícejazyčných dokumentů - možnost mít v jednom
dokumentu víc různých částí a dynamicky vybírat, které zobrazit
verze 1.21 (konec května 1996)
- součástí automaticky generované lišty s nabídkou kódování
může být i možnost přepnout kódování pomocí původního
whichcode.
- opraveno špatné používání metody FILE (koliduje s definicí
FILE ve stdio.h); názvy metod jsou nyní opět malými
písmeny
verze 1.2 (konec května 1996)
- automatické vložení lišty s nabídkou kódování
- kódovací tabulky rozšířeny o většinu ostatních znaků s diakritikou (i např. a se stříškou apod.)
- opraven whichcode.src, aby vytvořený whichcode
byl zpracovatelný i bashem
verze 1.1 (květen 1996)
- opraveno špatné nahrazování řetězce __CHARSET__
při metodě http
- kódovací tabulky rozšířeny o slovenské znaky
- chybové hlášky jsou "systémovější" - v hlavičce vrací
(po vzoru SaCzechu 2.1) i Status s platným kódem.
- __CHARSET__ rozpoznáván i v HTML hlavičkách při metodě http
(umožňuje zachování kódu i v obrázcích s klikou)
- lze překódovat i parametry, zadané programu (obsah proměnné
QUERY_STRING)
- zdokonaleno rozhodování, která metoda se má použít při guess
tak, že metoda http se použije i tehdy, když
požadované URL obsahuje CGISUFFIX.
verze 1.0 (květen 1996)
- možnost získávat kódované dokumenty prostřednictvím HTTP
- podpora HTTP hlaviček Last-Modified, Content-Size
a If-Modified-Since při zpracování souborů
- možnost opatřit konverzní sadu příponou (např. .cgi) pokud
to systém vyžaduje
- při metodě HTTP nebo GUESS je volanému
skriptu předáván i dotaz (QUERY_STRING)
- korektní chování při chybně zadaném URL (neexistující soubor)
- je možno používat více jmen kódů (aliasy)
- součástí distribuce je which.src s příklady kódů
Zpět
|