[ stargatenow @ 07.06.2010. 11:05 ] @
Pokusavam da komuniciram sa jednim Linux-based sistemom preko SSL, koristeci SslStream u C# u .NET 2.0. Sve je radilo kako treba, osim slanja jedne komande tom sistemu: posle nje mi on posalje odgovor, ali od tog momenta vise nista ne mogu da procitam iz SslStream-a (blokira na .Read, a nece da cita ni asinhrono). Ne dobijem nikakav exception, stream je otvoren, sve izgleda kao da udaljeni sistem nista vise ne salje. Na kraju sam krenuo da posmatram komunikaciju kroz Wireshark, i otkrio sam sta je uzrok: poslednja poruka koju sam ispravno primio sadrzi i neki plaintext (koji izgleda kao neka greska koju baci Linux) unutar tela SSL paketa. Pretpostavljam da plaintext unutar tela SSL paketa nije predvidjen/dozvoljen, ali me buni zasto mi onda SslStream nekako ne stavi do znanja da je doslo do takvog problema (preko nekog exception-a ili sl). Ima li neko ideju kako da u kodu uhvatim da se ovo desilo, i da nekako oporavim stream? Probao sam i da uradim sledece: postavim ReadTimeout stream-a na npr. 5 sec (ciljam da to istekne upravo posle problematicne komande), on baci IOException kada to istekne (posle te komande) a nema podataka, i onda u sledecem .Read uspesno procita plaintext poruku. Ovo mi onda pravi druge probleme, izmedju ostalog i to da sistem moze da mi baca ovaj exception non-stop, jer moze da se desi da duze vreme nema poruka izmedju sistema... NOTE: kada uklonim uzrok te Linux greske koju dobijem kao plaintext, sve radi kako treba, ali mi ni to nije trajno resenje, jer moram da handlujem ovo zbog drugih potencijalnih gresaka. |