[eMule-Web]  

Zurück   [eMule-Web] > eMule > eMule MODs - Allgemein

eMule MODs - Allgemein Alles zu den eMule-MODs, die unsere Anforderungen für 'saubere' MODs erfüllen.

Antwort
 
LinkBack Themen-Optionen
Alt 30. March 2003, 16:13   #1
MODder
 
Benutzerbild von MightyKnife
 
Registriert seit: 09.03.2003
Beiträge: 42
Standard: EMule-Bug bei Umstellung auf Sommerzeit ! Problem: EMule-Bug bei Umstellung auf Sommerzeit !



Hi... zusammen

Ich arbeite zwar noch mit der Version Morph 0.26d - mir ist da ein Bug aufgefallen, von dem ich glaube, dass er in allen EMule-Versionen vorkommt !

Ich habe heute meinen Muli neu gestartet und - oh Wunder oh Wunder - er fing auf einmal an, alle Verzeichnisse neu zu scannen und die Dateien zu rehashen !?!

Eine Untersuchung des Quellcodes lässt darauf schliessen, dass der Muli ein Sommer-/Winterzeitproblem hat !

Scheinbar kommt er mit der Umstellung der Uhrzeit nicht richtig klar und behandelt daher alle Dateien nach der Zeitumstellung als neue Dateien !

Könnt ihr das bitte checken und an die Hauptentwickler weitergeben, falls dieses Problem in den aktuellen Versionen noch besteht ?
__________________
Auf bai...

MightyKnife
MightyKnife ist offline   Mit Zitat antworten
Alt 30. March 2003, 16:57   #2
Board Methusalem
 
Registriert seit: 13.02.2003
Beiträge: 3.315

also ich weiß ja nich was du meinst aber bei mir war gar nix...
es lief so normal wie immer und ich hab [lovelace.9b]

burner ist offline   Mit Zitat antworten
Alt 30. March 2003, 17:02   #3
Newbie
 
Registriert seit: 30.03.2003
Beiträge: 5
Standard: EMule-Bug bei Umstellung auf Sommerzeit ! EMule-Bug bei Umstellung auf Sommerzeit ! Details

meine dateien hat er auch rehashed

__________________

--------------------
Gotisch ist offline   Mit Zitat antworten
Alt 30. March 2003, 17:11   #4
MxM
Gesperrt
 
Registriert seit: 11.12.2002
Beiträge: 716
Standard: EMule-Bug bei Umstellung auf Sommerzeit ! Lösung: EMule-Bug bei Umstellung auf Sommerzeit !

das könnte einiges erklären, wenn sich durch blosses zeitumstellen der hash verändert. ich persönlich halte das für humbug
MxM ist offline   Mit Zitat antworten
Alt 30. March 2003, 17:22   #5
V.I.P.
 
Registriert seit: 07.12.2002
Beiträge: 3.033
Standard: EMule-Bug bei Umstellung auf Sommerzeit ! EMule-Bug bei Umstellung auf Sommerzeit ! [gelöst]

Der Hash ändert sich natürlich nicht durch die Zeitumstellung. Aber ich kann mir denken, woran es liegt. Emule muß die Datei neu hashen, wenn sich etwas an ihr geändert hat. Und woran kann man erkennen, ob sich eine Datei geändert hat? Natürlich am Inhalt, aber Emule kann sich natürlich nicht den Inhalt der ganzen Datei merken, also quasi die Datei kopieren. Eine andere Möglichkeit wäre, man hasht die Datei und merkt sich, wann die Datei gehasht wurde. Windows (genauer das Dateisystem) führt bei jeder Datei Buch, wann sie zuletzt geändert wurde. Wenn das letzte Änderungsdatum ein anderes ist wie zu dem Zeitpunkt, wo gehasht wurde, hat wohl jemand anderes daran herumgepfuscht -> neuer Hash erforderlich. Wenn Emule selbst darauf zugreift, kann es natürlich diese Änderungen sich merken und muß nicht neu hashen. Und ich denke mal, das Emule bei so einem Zeitsprung von einer Stunde einfach irgendwie durcheinanderkommt und deswegen neue hashen muß. Wie gesagt, nur ne Theorie, aber möglich.
__________________
info
Usul ist offline   Mit Zitat antworten
Alt 30. March 2003, 20:04   #6
MODder
 
Benutzerbild von MightyKnife
 
Registriert seit: 09.03.2003
Beiträge: 42

Also das eigentliche Problem liegt darin, wie EMule versucht zu erkennen, ob sich eine Datei geändert hat.

Auf der Festplatte ist das Änderungsdatum der Datei unabhängig von Sommer-/Winterzeit gespeichert.
In der known.met ist die Uhrzeit der letzten Änderung ebenfalls gespeichert - und zwar nach die Umrechnung in Sommer/Winterzeit !

Für den Vergleich, ob sich die Datei geändert hat, wird das auf der Festplatte gespeicherte Datum zuerst durch die Windows-Routine gejagt, die Sommer/Winterzeit draufaddiert, und dann mit dem Datum in dem Known.met verglichen. Das geht dann natürlich in die Hose, da der auf der Festplatte gespeicherte Wert fest ist und da nicht mehr die Stunde für Sommer/Winterzeit draufaddiert werden darf !

Der Wert unterscheidet sich dann natürlich in dem Moment von dem gespeicherten Datum, wo die Windows-Routine anders draufaddiert - und schon ist die Datei "unterschiedlich" und muss neu gehasht werden.

Hier der zugehörige Codeschnipsel:

Datei: SharedFileList.cpp
Funktion: void CSharedFileList::AddFilesFromDirectory(char* directory);
Codezeilen:

CTime lwtime;
ff.GetLastWriteTime(lwtime);
uint32 fdate = mktime(lwtime.GetLocalTm());
CKnownFile* toadd = filelist->FindKnownFile(ff.GetFileName().GetBuffer(),fdate, (uint32)ff.GetLength());

=> Erst Änderungsdatum der Datei von der Platte holen, dann umwandeln, dann in FindKnownFile zum Vergleich reinstecken...

Datei: KnownFileList.cpp
Funktion: CKnownFile* CKnownFileList::FindKnownFile(char* filename,uint32 in_date,uint32 in_size);
Codezeilen:

if (ElementAt(i)->GetFileDate() == in_date && ...

... und dann mit dem gespeicherten Datum vergleichen.

Tja, schade aber auch

Richtig wäre es, nicht die umgerechneten Daten zu vergleichen, sondern ohne irgendwelche Umrechenroutinen zu arbeiten und das Roh-Datum zu speichern und zu vergleichen...
__________________
Auf bai...

MightyKnife
MightyKnife ist offline   Mit Zitat antworten
Alt 30. March 2003, 20:18   #7
MODder
 
Benutzerbild von MightyKnife
 
Registriert seit: 09.03.2003
Beiträge: 42

Kleiner Nachtrag:

Der Fehler lässt sich ganz einfach beheben, wenn man aus

uint32 fdate = mktime(lwtime.GetLocalTm());

die Zeile

uint32 fdate = mktime(lwtime.GetGmtTm());

macht. Dann wird nicht mehr umgerechnet und alles funktioniert ohne rehashen.
__________________
Auf bai...

MightyKnife
MightyKnife ist offline   Mit Zitat antworten
Alt 30. March 2003, 23:35   #8
Advanced Member
 
Benutzerbild von budman
 
Registriert seit: 17.02.2003
Beiträge: 127

Cooler tip, Danke!

Hatte das heute auch schon, hat aber offengestanden nicht lange gedauert, deshalb hab ichs gar nicht wahrgenommen!

Gruss Bud
__________________
"Wer bereit ist, grundlegende Freiheiten aufzugeben, um sich kurzfristige Sicherheit zu verschaffen, der hat weder Freiheit noch Sicherheit verdient!" George Washington
budman ist offline   Mit Zitat antworten
Alt 31. March 2003, 08:22   #9
MODder
 
Registriert seit: 02.01.2003
Beiträge: 216

@MightyKnife:

Also Deine Lösung verändert die Uhrzeit die gespeichert wird.
Muss dann nicht auch die Zeit mit der verglichen wird geändert werden ???

in LoadPartFile:
// check date of .part file - if its wrong, rehash file
CFileStatus filestatus;
m_hpartfile.GetStatus(filestatus);
if (date != mktime(filestatus.m_mtime.GetLocalTm())){

in das hier geändert werden ???
if (date != mktime(filestatus.m_mtime.GetGmtTm())){

Weiterhin frage ich mich ob die GetGmtTm sich nicht ebenfalls bei der Umstellung Winterzeit/Sommerzeit ändert.
Und das Problem somit bei der nächsten Umstellung dann trotzdem wieder auftritt...
Eigentlich sollte eine andere Zeitzone ja ebenfalls von der Zeitumstellung betroffen sein und nicht nur Deutschland, oder habe ich da etwas falsch verstanden ?
vorlost ist offline   Mit Zitat antworten
Alt 31. March 2003, 20:00   #10
MODder
 
Benutzerbild von MightyKnife
 
Registriert seit: 09.03.2003
Beiträge: 42

Zitat:
Zitat von vorlost
@MightyKnife:

Also Deine Lösung verändert die Uhrzeit die gespeichert wird.
Muss dann nicht auch die Zeit mit der verglichen wird geändert werden ???

in LoadPartFile:
// check date of .part file - if its wrong, rehash file
CFileStatus filestatus;
m_hpartfile.GetStatus(filestatus);
if (date != mktime(filestatus.m_mtime.GetLocalTm())){

in das hier geändert werden ???
if (date != mktime(filestatus.m_mtime.GetGmtTm())){
Also erstmal: Meine Lösung verändert nicht die Uhrzeit, die gespeichert wird, sondern sie interpretiert die bereits gespeicherte Zeit anders - d.h. in der Known.met wird nix geändert. (oder hab ich da jetzt was falsch verstanden)

Die Änderung, die ich vorgeschlagen habe, betrifft die fertigen Dateien. Was du nun vorschlägst betrifft die .part-Dateien, die noch nicht fertig sein.
Also würde ich sagen: ja, ich glaube das müsste auch geändert werden.

Zitat:
Zitat von vorlost
Weiterhin frage ich mich ob die GetGmtTm sich nicht ebenfalls bei der Umstellung Winterzeit/Sommerzeit ändert.
Und das Problem somit bei der nächsten Umstellung dann trotzdem wieder auftritt...
Eigentlich sollte eine andere Zeitzone ja ebenfalls von der Zeitumstellung betroffen sein und nicht nur Deutschland, oder habe ich da etwas falsch verstanden ?
Das weis ich auch nicht so genau. In der Hilfe konnte ich bis jetzt noch nix über Sommer-/Winterzeit finden. Ich glaube jedoch nicht, das alle Länder der Zeitzone GMT+1 Sommer/Winterzeit haben. Gibt's das z.B. in Afrika ? Ich glaub nicht. Daher glaube ich, dass die GMT von der Sommer-/Winterzeit unabhängig ist. Will ich aber nicht die Hand für ins Feuer legen.

Moment, ich werf mal nen Blick in die Hilfe... (kram wühl such)

Vielleicht kann man aber auch was besseres mit dem Item tm_isdst der tm-Struktur machen, die der Funktion mktime übergeben wird. Die hat glaube ich Auswirkungen darauf, ob die Sommerzeit ("Daylight Saving Time, DST") aktiv ist oder nicht. Kenn ich mich aber auch (noch) nicht so aus. Müsste ich mal bei Gelegenheit antesten.
__________________
Auf bai...

MightyKnife
MightyKnife ist offline   Mit Zitat antworten
Alt 31. March 2003, 20:16   #11
MODder
 
Benutzerbild von MightyKnife
 
Registriert seit: 09.03.2003
Beiträge: 42

Zitat:
Zitat von vorlost
Weiterhin frage ich mich ob die GetGmtTm sich nicht ebenfalls bei der Umstellung Winterzeit/Sommerzeit ändert.
Und das Problem somit bei der nächsten Umstellung dann trotzdem wieder auftritt...
Eigentlich sollte eine andere Zeitzone ja ebenfalls von der Zeitumstellung betroffen sein und nicht nur Deutschland, oder habe ich da etwas falsch verstanden ?
Hier ich hab was gefunden:

In der Hilfe zur "tm"-Struktur heisst es:

tm_isdst: Positive if daylight saving time is in effect; 0 if daylight saving time is not in effect; negative if status of daylight saving time is unknown.

Wenn ich nun in die Hilfe der Funktion "CTime::GetGmtTm" reinschaue, dann steht da:

Return Value tm_isdst: Always 0

Das würde bedeuten, die von GetGmtTm zurückgelieferte Zeit, berechnet aufgrund der UTC, ist unabhängig von Sommer-/Winterzeit.
Passt das ?
__________________
Auf bai...

MightyKnife
MightyKnife ist offline   Mit Zitat antworten
Alt 31. March 2003, 20:23   #12
MODder
 
Benutzerbild von MightyKnife
 
Registriert seit: 09.03.2003
Beiträge: 42

[quote="MightyKnife"]
Zitat:
Zitat von vorlost
Weiterhin frage ich mich ob die GetGmtTm sich nicht ebenfalls bei der Umstellung Winterzeit/Sommerzeit ändert.
Und das Problem somit bei der nächsten Umstellung dann trotzdem wieder auftritt...
Eigentlich sollte eine andere Zeitzone ja ebenfalls von der Zeitumstellung betroffen sein und nicht nur Deutschland, oder habe ich da etwas falsch verstanden ?
Hier ich hab was gefunden:

In der Hilfe zur "tm"-Struktur heisst es:

tm_isdst: Positive if daylight saving time is in effect; 0 if daylight saving time is not in effect; negative if status of daylight saving time is unknown.

Wenn ich nun in die Hilfe der Funktion "CTime::GetGmtTm" reinschaue, dann steht da:

Return Value tm_isdst: Always 0

Das würde bedeuten, die von GetGmtTm zurückgelieferte Zeit, berechnet aufgrund der UTC, ist unabhängig von Sommer-/Winterzeit.
Passt das ?

Edit: Ach ja, die Hilfe von void _tzset( void ); gibt glaube ich auch noch Aufschlüsse über den Unterschied von UTC und LocalTime.
__________________
Auf bai...

MightyKnife
MightyKnife ist offline   Mit Zitat antworten
Alt 2. April 2003, 19:49   #13
MODder
 
Benutzerbild von MightyKnife
 
Registriert seit: 09.03.2003
Beiträge: 42

Wie ich jetzt feststellen musste, reichten beide Änderungen noch nicht aus, um EMule auf UTC umzustellen.

Zusätzlich muss noch folgende Änderung gemacht werden:

Datei: KNOWNFILE.CPP
Routine: bool CKnownFile::CreateFromFile(char* in_directory, char* in_filename)

Zeile

date = fileinfo.st_mtime;

muss geändert werden in

date = mktime (gmtime (&fileinfo.st_mtime));

Ansonsten werden die Dateien beim Neu-Laden mit dem falschen Datum gehasht !

Aber ansonsten scheint es zu funktionieren !
__________________
Auf bai...

MightyKnife
MightyKnife ist offline   Mit Zitat antworten
Antwort

Lesezeichen


Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen: EMule-Bug bei Umstellung auf Sommerzeit !


  1. DLink: Nach Umstellung auf WLAN Low Id
    DSL Router - 24. July 2008 (1)
  2. Kein Upload mehr nach Umstellung von DSL 6000 auf 16000
    Xtreme MOD - 16. September 2007 (9)
  3. Umstellung von MorphXT 9.5 auf 9.6 klappt unter Vista nicht
    eMule MODs - Allgemein - 3. June 2007 (8)
  4. Umstellung von DSL 2000 auf 6000, Neue Einstellungstips,bitte
    Mülltonne - 26. January 2006 (1)
  5. Nach Umstellung auf 6Mbit bei Arcor fehlt Bandbreite
    ISP - Internet Service Provider - 26. October 2005 (4)
  6. Umstellung von Englisch auf Deutsch Adobe
    Mülltonne - 1. May 2005 (4)
  7. Emule EastShare v7.4 -> Bug bei Upload ?
    eMule MODs - Allgemein - 7. September 2004 (2)
  8. Bug bei zwei Dateien gleichen Namens in eMule 0.30e
    eMule Allgemein - 21. May 2004 (0)
  9. 0 DL bei 12 k UL seit Umstellung auf T-DSL 2000
    eMule Allgemein - 8. May 2004 (21)
  10. Prop mit umstellung von sivka v10e8 auf v10e9f
    Sivka-MOD - 27. February 2004 (1)
  11. 8ung: Schwerer Bug bei EMULE 28a!
    eMule Allgemein - 9. May 2003 (5)
  12. Forum-Server... Nicht auf Sommerzeit eingestellt?
    Allgemeines OffTopic - 3. April 2003 (2)


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:07 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
PAGERANK