2011-01-04 19 views
1

Ein Kunde meldet einen Verbindungsfehler mit einem seltsamen Profil: Er schlägt anscheinend nur bei der ersten URL-Anfrage über CFNetwork fehl, seit die App gestartet wurde.Was bedeutet CFNetwork-Fehler -4 in der Domäne CFStreamErrorHTTP?

Der von CFNetwork offenbar zurückgegebene Fehlercode ist die Domäne CFStreamErrorHTTP, jedoch mit Fehlercode -4, der keinem öffentlich definierten Fehlercode für diese Domäne entspricht. In CFHTTPStream.h enden die öffentlich definierten Fehlercodes für CFStreamErrorHTTP verheißungsvoll bei -3, was stark andeutet, dass -4 ein Fehlercode sein kann, den Apple verwendet, aber noch nicht öffentlich dokumentiert wurde.

Irgendeine Idee, was hier vor sich geht? Hat jemand anderen diesen Fehlercode gesehen und Reim oder Grund dafür gefunden?

+1

Wie verbinden sie sich mit dem Internet? wenn es durch CLEAR oder 4G etwas oder anderes ist, lässt vielleicht ihr Modem die Anfrage fallen, während es wiederverbindet? – atebits

+0

Gut gedacht, sie verbinden sich über ein normales Kabel ISP. Ich frage mich, ob es etwas mit Software von Drittanbietern zu tun hat, z. wie Kleiner Schnatz. Mit ihnen überprüfen. – danielpunkass

Antwort

3

Wahrscheinlich nicht die endgültige Antwort und das könnte sich geändert haben, seit sie CFNetwork geschlossen, aber ich fand die folgenden online, die angibt, dass -4 ist eine Verbindung verloren Fehler.

http://www.opensource.apple.com/source/CFNetwork/CFNetwork-129.9/HTTP/CFHTTPConnection.c

+0

Danke! Das ist ein guter Fund und entspricht in der Beschreibung dem, was der Kunde sieht. Jetzt, wenn ich nur herausfinden kann, warum die Verbindung beim ersten Versuch verloren gehen würde ... – danielpunkass

+0

Auch von einem Freund, dieser ältere Beitrag auf MacNetworkProg hingewiesen: http://lists.apple.com/archives/macnetworkprog/2009/Mar /msg00007.html – danielpunkass

+0

Sind sie über eine Art von VPN, die geschlossen wurde, bevor die App startet? Allgemeiner, unter welchen Bedingungen befindet sich das Gerät/Mac beim Start der App? – madninja

0

Ich glaube, dass Sie einen Teil des Codes zeigen haben, ist versagt, aber ein paar Fragen in den Sinn. Erstens, kannst du dieses Problem selbst nachvollziehen, kannst du es reproduzieren? Insbesondere wäre es interessant zu sehen, auf welchem ​​Thread dies geschieht und was der aktuelle runLoop-Modus ist. Es könnte ein Hinweis auf einen Stream oder eine Verbindung sein, bei dem die Zeitplanung für die internen CF-Runloops fehlschlägt.

Abgesehen davon (und es ist eine Schande, dass CFNetwork nicht mehr öffentlich aktualisiert wird), könnte es eine Zillion Dinge sein, aber Sie müssen so viele Informationen wie möglich aufzeichnen, wenn Sie den Fehler nicht direkt debuggen können (Hinweis Hinweis - https://github.com/fpillet/NSLogger kann Ihnen helfen, die Informationen aus dem Client remote zu protokollieren).

Schließlich stellen Sie die Frage auf Mac Dev Foren (oder iOS Dev Foren, wenn Ihr Code auf iOS läuft). Ping Quinn, Er kennt alles. Sobald er die Frage nicht öffentlich beantworten kann, öffnen Sie einen DTS-Vorfall und senden Sie ihm das Ticket #. Er ist der Typ, den du in dein Problem sehen willst :-)

+0

Außerdem muss der Client eine andere Verbindungskonfiguration mit demselben Computer versuchen (d. H. Von einem öffentlichen Wifi-Hotspot oder an einem anderen Ort). Wenn es funktioniert, können Sie das Problem in dieser speziellen Netzwerkkonfiguration umgehen. Stellen Sie außerdem sicher, dass Ihr Code signiert ist, wenn Sie SSL verwenden. – fpillet