Bekijk Volledige Versie : Unable to create selectable TCP socket (1416 >= 1024)
De laatste tijd is het niet meer mogelijk om te authenticeren met Horde (imp).
We weten dat het reeds heeft gewerkt, echter is het nu al een tijdje dat het niet meer werkt.
We hebben reeds naar een oplossing gezocht via google, maar zijn er nog steeds niet uit, dus proberen we het effe via deze weg.
Via volgende link kan je checken of een authenticatie tot stand kan worden gebracht:
http://84.244.138.87/horde/imp/test.php
Echter krijgen wij bij alle resultaten:
ERROR - The server returned the following error message:
Unable to create selectable TCP socket (1416 >= 1024)
Heeft iemand enig idee wat dit kan zijn?
Kan hij wel goed connecten naar de IMAP server?
Hier een link: http://www.nabble.com/Re:-Horde-Webmail-authentification-methods-p16767322.html
Een connectie maken naar poort 143 is geen probleem, echter staat er niks van IMAP vermeld, terwijl dit op onze andere server wel het geval is.
Niemand die hier een oplossing voor heeft?
De melding ben ik wel eens eerder tegen gekomen. Dit was echter bij een forum.
Deze deed een resolve op het IP van de bezoeker, maar daar zat een loop in. Niet direct een antwoord op je vraag, maar misschien heb je er wat aan.
deze foutmelding komt mij ook bekend voor. voor zover ik me kan herinneren had het te maken met een segfaultende imap c-lient. Waarschijnlijk geven de apache logs je meer informatie over de exacte oorzaak.
De oorzaak van dit probleem is het aantal file descriptors die geopent zijn. Hier zit een limiet van 1024 op, waar Apache ruim overheen kan gaan. Ga zelf maar na: elk (sub)domein heeft een .log, een .error.log en een .bytes logbestand.
Oude versies van php-imap crashten (segmentation fault) hierop, de nieuwe geven inderdaad een melding zoals "Unable to create selectable TCP socket (1416 >= 1024)".
De oorzaak hiervan is verouderde code van de c-client, deze gebruikt de select() methode ipv poll(), zie man 2 select/poll. De fout komt alleen voor als apache erg veel logbestanden open heeft, meer dan 1024. Het betreft hier de FD_SETSIZE.
Er zijn bij mijn weten twee oplossing hiervoor. De eerste is het herschrijven van de broncode van c-client (bestand src/osdep/unix/tcp_unix.c) zodat ipv de select() aanroepen poll() gebruikt wordt. De tweede oplossing is de limiet van 1024 ophogen. Uiteraard is de eerste oplossing de beste.
Ik ben aan de gang geweest met de code, maar het is mij te wazig (al was ik best dichtbij voor m'n gevoel). Uiteindelijk heb ik het dan ook "opgelost" door de limiet van het aantal descriptors per proces te verhogen naar 4096. Dit is relatief eenvoudig te doen door het bestand /usr/include/bits/typesizes.h aan te passen.
Zoek naar:
/* Number of descriptors that can fit in an `fd_set'. */
#define __FD_SETSIZE 1024
En verhoog dit (naar bijvoorbeeld 4096).
Daarna c-client en php opnieuw compileren (en apache herstarten) en de foutmelding zou weg moeten zijn.
Leesvoer:
http://mailman1.u.washington.edu/pipermail/imap-uw/2008-May/002059.html
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=478193
mvg,
MoehMan