1

Téma: DNS resolver - problémy

Zdravím,
zakomponoval jsem do svého programu posílání dat na (svůj) HTTP server, takže jsem se dostal i k problému s funkcí dns_resolv(). Zkoušel jsem to důkladně testovat, ale připadá mi, že hodnotu bez timeoutu vrátí jen v pžípadě, že už má SDS hodnotu IP ve své paměti a neoslovuje znova DNS server. Tady je kousek kódu:

vrat_datumCas {
    den1 = DEN / 10;
    den2 = DEN % 10;
    mes1 = MES / 10;
    mes2 = MES % 10;
    rok1 = ROK;
    rok4 = rok1 % 10;
    rok1 /= 10;
    rok3 = rok1 % 10;
    rok1 /= 10;
    rok2 = rok1 % 10;
    rok1 /= 10;
    hod1 = HOD / 10;
    hod2 = HOD % 10;
    min1 = MIN / 10;
    min2 = MIN % 10;
    sec1 = SEC / 10;
    sec2 = SEC % 10;
}

dns {
    vrat_datumCas();
    echo(hod1, hod2, ':', min1, min2, ':', sec1, sec2, ' DNS: zavolan dns_resolv(www.i-dum.info), SYS[65]=', sys[65]);
    dns_resolv('www.i-dum.info');         //adresa HTTP serveru, kam chceme posílat data
    //počkáme 10s na převod
    sys[64] = 10;
    
    vrat_datumCas();
    echo(hod1, hod2, ':', min1, min2, ':', sec1, sec2, ' DNS: Cekam na SYS[65]!=0');
cekam_na_dns:
    if (sys[65]==0 && sys[64]>0) goto cekam_na_dns;

    vrat_datumCas();
    echo(hod1, hod2, ':', min1, min2, ':', sec1, sec2, ' DNS: Cekam na odpoved od ', sys[70], '.', sys[71], '.', sys[72], '.', sys[73]);
cekam_na_dns_odpoved:
    if (sys[65]==514 && sys[64]>0) {
        goto cekam_na_dns_odpoved;
    }
    
    if (sys[65]==513) {
        vrat_datumCas();
        echo(hod1, hod2, ':', min1, min2, ':', sec1, sec2, ' DNS: chyba');
        goto preskocit;
    }
    if (sys[65]==514) {
        vrat_datumCas();
        echo(hod1, hod2, ':', min1, min2, ':', sec1, sec2, ' DNS: timeout');
        goto preskocit;
    }
    
    //převod OK...
    IP1 = sys[66];                            //tady bude IP adresa
    IP2 = sys[67];
    IP3 = sys[68];
    IP4 = sys[69];
    vrat_datumCas();
    echo(hod1, hod2, ':', min1, min2, ':', sec1, sec2, ' DNS: RESOLV ', IP1, '.', IP2, '.', IP3, '.', IP4);

label preskocit:
}

Výsledek je pak zhruba takovýto (časy záleží na timeout):23:50:06 SDS: program spusten...

23:50:06 DNS: zavolan dns_resolv(www.i-dum.info), SYS[65]=65535
23:50:06 DNS: Cekam na SYS[65]!=0
23:50:06 DNS: Cekam na odpoved od 10.0.13.1
23:50:16 DNS: timeout
23:50:30 HTTP: www.i-dum.info/_______?...
23:50:30 SYS[65]=514, SYS[75]=0
23:51:00 HTTP: www.i-dum.info/_______?...
23:51:00 SYS[65]=1024, SYS[75]=200

V ukázce je i výsledek dalších funkcí, ale ten pro DNS není důležitý (data to na server posílá, protože jsem tu IP adresu dal přímo do http_get()). Pokud tam chci od DNS třeba adresu Google, ten dns_resolver mi hodnotu vrátí... Tak nevím, poradíte?

2

Re: DNS resolver - problémy

Po nahrání SDS-C programu mi DNS hodi OK a kazdej dalsi dotaz timeout.... A to v tom mam standartni program z www... Takže to asi bude normální.... :-)

3

Re: DNS resolver - problémy

Clouseau napsal:

Po nahrání SDS-C programu mi DNS hodi OK a kazdej dalsi dotaz timeout.... A to v tom mam standartni program z www... Takže to asi bude normální.... :-)

Bohužel, musím toto potvrdit. dns_resolv funguje je napoprvé. Mám to vyzkoušené jak s vlastním programem, tak s tím standartním z portálu (ten pro druhé a další průchody cyklem použije hardkodovanou IP adresu).

Mám:  hw SoC-ARM REV4 100Mbit DF9, ze dne 20.12.2012.

Docela bych ocenil nápravu.

Díky.

4

Re: DNS resolver - problémy

Děkuji za zjištění potenciální chyby.
Píšu do seznamu ověření+opravy (do nejbližší beta verze).

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

5

Re: DNS resolver - problémy

Taky s tím mám problémy a zjistil jsem, že sys[65] a sys[75] je po nějakém času "0" ... a nevím proč :-(
Program je standardní jenom nepoužívám DNS resolver ale taky přímo IP vlastního serveru.

SDS micro DIN - firmware 8.7.2014, SDS micro DIN - firmware Beta xx.x.2014
SDS nováček :-) Správce sítě, programátor, kutil .... :-)

6

Re: DNS resolver - problémy

TiborTeam napsal:

Taky s tím mám problémy a zjistil jsem, že sys[65] a sys[75] je po nějakém času "0" ... a nevím proč :-(

Která je to verze firmware ? SDS MICRO nebo MACRO nebo UPS ?
Ty sys hodnoty jsou v nule v jakém přesně případě (po které funkci, nebo náhodně)?
dns_resolv je právě v řešení, potřebuji co nejvíce informací.

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

7 Naposledy upravil: TiborTeam (2013-02-09 20:13:05)

Re: DNS resolver - problémy

Firmware i HW mám poslušně v podpisu :-) Zatím jsem si nevšiml jestli to dělá i FW z ledna ....
Myslím, že to je dost náhodné. Zítra dopoledne tady hodím podrobné info.

Prozatím to vypadá čistě náhodně. Ale dnes po kontrole jsem zjistil, že sys[65] zůstalo vyset na 514 /odeslal požadavek na server a čeká na odpověď/
Po restartu opět funguje. Pustil jsem to znova ať vidím po jakém času to vypadne ....

V kodu mám :

http_get(213,155,251,1,'www.tiborteam.eu','/sds/data.php?temp00=', sys[310],'&temp01=', sys[311],'&info01=', sys[65],'&info02=', sys[75]);

DNS resolver se seknul po 288 záznamech (co minuta).
Opět sys[65] na 514 a při opětovném DNSresolvu hlásí 1029, není vyřízený předchozí požadavek, samozřejmě ....
Po restaru funguje vše OK.
Výpis z console:
-----------------------------------------------------------
S65: 514 S75: 0 S76: 80 S77: 0 S78: 32
IP-S66: 0 S67: 0 S68: 0 S69: 0
DNS-S70: 213 S71: 155 S72: 229 S73: 197
-----------------------------------------------------------
S65: 1029 S75: 0 S76: 80 S77: 0 S78: 32
Data odeslána - NE.
S65: 1029 S75: 0 S76: 80 S77: 0 S78: 32
-----------------------------------------------------------

V síti problém určitě neni. Jeden SDS mám v práci na firemní síti a odesílám na firemní server, druhý mám doma a data posílám na server NASu. Oba se sekají stejně.

SDS micro DIN - firmware 8.7.2014, SDS micro DIN - firmware Beta xx.x.2014
SDS nováček :-) Správce sítě, programátor, kutil .... :-)

8 Naposledy upravil: TiborTeam (2013-02-11 14:46:56)

Re: DNS resolver - problémy

To je divné, DNS resolver se opět seknul po 288 záznamech .... hmm
Nejde něčím ukončit DNS resolver aby nečekal do nekonečna na odpověď ????

Tak jsem asi zjistil jednu drobnost ...
Na těch 288. záznamech se sekne když používám IP dns_resolv('xxx.xxx.xxx.xxx'); místo 'www.mojeadresa.cz'
Ale bohužel, doma to takhle musím použít, tam mám pouze veřejnou IP.

SDS micro DIN - firmware 8.7.2014, SDS micro DIN - firmware Beta xx.x.2014
SDS nováček :-) Správce sítě, programátor, kutil .... :-)

9 Naposledy upravil: TiborTeam (2013-02-11 21:20:07)

Re: DNS resolver - problémy

Vše beru zpět ! Našel jsem závadu .... 99.9% je to ve firmware !
Adamn, podívej se do ukládání administrace/Host IP.
Seknutí DNS resolvu se stane pouze v případě, kdy program normálně běží, jdu do administrace, nastavení eth. a dám STORE !
Udělá 288 záznamů a KONEC.

Dělám druhý pokus .... STORE na MAC adrese .... taky udělá restart SDS ....
Stejný výsledek .... 288 záznamů , KONEC ......

SDS micro DIN - firmware 8.7.2014, SDS micro DIN - firmware Beta xx.x.2014
SDS nováček :-) Správce sítě, programátor, kutil .... :-)

10

Re: DNS resolver - problémy

Aha aha aha
Takže dokud se neotevře webová stránka s administrací a zmáčkne "STORE !" tlačítko, tak to stále funguje ? Dlouhodobě ?
A až se to tlačítko zmáčkne, tak to pak zvládne jen 288 zavolání funkce dns_resolv?

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

11 Naposledy upravil: TiborTeam (2013-02-12 18:59:27)

Re: DNS resolver - problémy

adamn napsal:

Aha aha aha
Takže dokud se neotevře webová stránka s administrací a zmáčkne "STORE !" tlačítko, tak to stále funguje ? Dlouhodobě ?
A až se to tlačítko zmáčkne, tak to pak zvládne jen 288 zavolání funkce dns_resolv?

Asi ... takhle jsem to vypozoroval ...
DNS resolv volá pořád, ale čaká na vyřízení předchozího .... a nedojde na http_get ...

Další poznatek ... už to přestávám chápat :-)
Stejně se to chová když SDS vypnu/zapnu .... skončí na čekání DNS resolvu ... 288 záznamů ... KONEC

Vše jede v pořádku pouze v případě, že pošlu program přes upload do SDS ... teď už mám 400 záznamů, včera i 1000 ....
... a dnes to jede už od rána, cca 2400 záznamů ....
Nesmím restartovat SDS ani dát store kdy by se restartoval ....

SDS micro DIN - firmware 8.7.2014, SDS micro DIN - firmware Beta xx.x.2014
SDS nováček :-) Správce sítě, programátor, kutil .... :-)