Jump to content

Libnodave windows - Attenzione : Bug in chiusura connessione (Ethernet)


Recommended Posts

Posted

Ciao a tutti,

navigando nei sorgenti di libnodave mi sono accorto che la chiusura della connessione, fatta tramite ClosePort (in setportw.c) viene eseguita tramite una chiamata a CloseHandle.

Questo non è corretto, un socket aperto con la funzione socket() *DEVE* essere chiuso con la funzione CloseSocket (magari preceduta da shutdown() ), altrimenti il socket non viene deallocato dal pool messo a disposizione da winsock.

In parole povere, se nel nostro programma apriamo una connessione e questa resta attiva per sempre ok, altrimenti, se apriamo e chiudiamo la connessione solo quando abbiamo necessità di leggere o scrivere (cosa possibilissima) dopo circa 4000 connessioni (piu' o meno) abbiamo esaurito le risorse di winsock.

Possibili soluzioni :

1) Chiamare CloseSocket passando come parametro di->fd.rfd (oppure DaveFDS.rfd se si usa il componente TNoDave per delphi), in questo caso ClosePort non deve essere usata.

2) Evitare connessioni multiple.

Nel primo caso, la funzione puo' essere chiamata direttamente, in quanto winsock è già stato caricato nello spazio di indirizzamento del nostro programma e WsaStartup è stato già eseguito.

Cosa ne pensate ?

Saluti

Davide

Gabriele Corrieri
Posted

Ciao Davide

penso che faresti cosa gradita a Thomas, che parla un italiano molto buono, a scrivere del bug, in modo da poter, nella prossima edizione, averlo corretto.

Ciao

Gianmario Pedrani
Posted

Ottima analisi... complimenti... :)

Posted

Quoto tutto quello sopra detto da Gabrilele ;)

Posted

Si, quello l'ho fatto subito ;)

il post era per prevenire qualche grattacapo nel frattempo, dato che mi sembra che queste lib siano molto utilizzate (a giusta ragione).

Saluti

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...