Incerc sa simulez intern gethostbyname() intr-un program care, din varii
(dar intemeiate) motive, nu poate apela el insusi functia respectiva.
Programul deja are un rudiment de resolver incorporat, care stie sa se
duca la nameservere, sa se conecteze pe portul 53 si sa faca tot ce
trebuie. Un singur lucru nu stie programul respectiv sa faca: daca ai un
search path in resolv.conf, il ignora; deci, daca trimiti doar hostname-ul
catre program, el incearca sa-l rezolve asa cum e, fara sa mai adauge
domeniile din search path (unii probabil au recunoscut programul cu
pricina ;-) ).
Am bagat deja ceva cod de-al meu in programul ala, momentan reusesc sa
incarc lista de domenii din resolv.conf, tin cont de existenta simultana a
lui "search" si a lui "domain" ("last statement wins"), parsarea se face
corect, pointerii nu se scuipa reciproc :-) si am reusit (aparent) sa nu
mai obtin segmentation fault (dracia de program are un mod de a aloca
memoria... cel putin ciudat). Pina aici totul e bine.

Acuma vine prima problema...

Sa presupunem ca avem doua nameservere declarate in resolv.conf, iar in
search path avem doua domenii. Cum ar fi "corect" sa fie (nu intreb cum
face de fapt gethostbyname() din Linux, ci intreb cum ar fi teoretic
corect):
1. Iau primul domeniu, il append-ez la hostname, apoi iau la rind
nameserverele. Daca ambele dau gres, iau al doilea domeniu, il append-ez,
apoi incerc ambele nameservere
2. Incerc pe rind sa append-ez intii primul domeniu, apoi al doilea,
intrebind mereu primul nameserver. Daca ambele incercari dau gres, repet
figura cu al doilea nameserver
Nu prea reusesc sa inclin logic spre nici una din variante. Totusi:
- parca prima varianta ar fi mai rapida in caz de defectare a
nameserverelor (incerc cu primul si, daca nu merge, il marchez ca defect
si lucrez cu al doilea)
- parca a doua varianta ar fi ceva mai rapida in situatii normale (adica
atunci cind nu apar erori propriu-zise, ci doar hostname-ul e "scufundat"
mai catre coada listei din search path)
Parca-parca a doua ar fi mai buna...
Apropo: gethostbyname() cum face de fapt? :-)
Ar mai fi o posibilitate: sa merg pe a doua varianta si sa presupun ca
nameserverele oricum raspund identic, asadar daca nu obtin erori fatale de
la primul, ci doar ca nu exista FQDN-ul respectiv pentru nici una din
combinatii, nici sa nu mai incerc cu al doilea (avantajul vitezei).
Ce ziceti?

A doua problema:

Pentru a sti cind sa trimit direct numele hostului la nameservere, si cind
sa append-ez domeniile, am nevoie de un criteriu. Citind ceva pagini de
manual din diverse Unix-uri, se pare ca criteriul este urmatorul: daca
numele respectiv contine cel putin un punct, se presupune ca este FQDN si
nu se mai append-eaza nimic. Daca nu contine nici un punct, se baleiaza
search path-ul cu el.

Pareri? Comentarii? Cotoare de mar?

-- 
Florin Andrei

---
Send e-mail to '[EMAIL PROTECTED]' with 'unsubscribe rlug' to 
unsubscribe from this list.

Raspunde prin e-mail lui