andig / carddav2fb

Download CardDAV VCards and upload as phonebook to AVM FRITZ!Box
63 stars 19 forks source link

Error on large contact lists #238

Closed linuzer closed 2 years ago

linuzer commented 2 years ago

When I try to download/convert a contact list with around 1150 contacts, lots of them having a contact-image, the following error occurs:

./carddav2fb run -i -vvvv
Downloading recent FRITZ!Box phonebook
Save internal data from recent FRITZ!Box phonebook!
Phone numbers with special attributes saved
Downloading vCard(s) from account Thomas
    0 [>---------------------------] < 1 sec 6.0 MiBPHP Warning:  SimpleXMLElement::__construct(): Entity: line 285003: parser error : xmlSAX2Characters: huge text node in /opt/tmp/carddav2fb/src/CardDav/Backend.php on line 185
PHP Warning:  SimpleXMLElement::__construct():  J/F4QMzloA8d236CftAf5DOKeI6qjht8o1CFX6cRdFkOTd+/KzlO+szivDihpWHS+CV6ikD34v&#13; in /opt/tmp/carddav2fb/src/CardDav/Backend.php on line 185
PHP Warning:  SimpleXMLElement::__construct():                                                                                ^ in /opt/tmp/carddav2fb/src/CardDav/Backend.php on line 185
  272 [------->--------------------] 3 secs 66.3 MiB
In MimeDir.php line 284:

  [Sabre\VObject\EofException]
  End of document reached prematurely

Exception trace:
  at /opt/tmp/carddav2fb/vendor/sabre/vobject/lib/Parser/MimeDir.php:284
 Sabre\VObject\Parser\MimeDir->readLine() at /opt/tmp/carddav2fb/vendor/sabre/vobject/lib/Parser/MimeDir.php:170
 Sabre\VObject\Parser\MimeDir->parseDocument() at /opt/tmp/carddav2fb/vendor/sabre/vobject/lib/Parser/MimeDir.php:90
 Sabre\VObject\Parser\MimeDir->parse() at /opt/tmp/carddav2fb/vendor/sabre/vobject/lib/Reader.php:47
 Sabre\VObject\Reader::read() at /opt/tmp/carddav2fb/src/CardDav/Backend.php:198
 Andig\CardDav\Backend->getVcards() at /opt/tmp/carddav2fb/src/functions.php:56
 Andig\download() at /opt/tmp/carddav2fb/src/DownloadTrait.php:35
 Andig\RunCommand->downloadProvider() at /opt/tmp/carddav2fb/src/DownloadTrait.php:70
 Andig\RunCommand->downloadAllProviders() at /opt/tmp/carddav2fb/src/RunCommand.php:54
 Andig\RunCommand->execute() at /opt/tmp/carddav2fb/vendor/symfony/console/Command/Command.php:298
 Symfony\Component\Console\Command\Command->run() at /opt/tmp/carddav2fb/vendor/symfony/console/Application.php:1015
 Symfony\Component\Console\Application->doRunCommand() at /opt/tmp/carddav2fb/vendor/symfony/console/Application.php:299
 Symfony\Component\Console\Application->doRun() at /opt/tmp/carddav2fb/vendor/symfony/console/Application.php:171
 Symfony\Component\Console\Application->run() at /opt/tmp/carddav2fb/carddav2fb:21

I have already a PR in preparation.

linuzer commented 2 years ago

Thanks for the merge.