<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
  <META NAME="GENERATOR" CONTENT="GtkHTML/3.30.3">
</HEAD>
<BODY>
Hi Felix,<BR>
<BR>
Your code is conceptually right. If it is not working, there's something more there or a bug...<BR>
<BR>
Maybe you can try to call to print the socket id before closing with something like:<BR>
<BR>
<BLOCKQUOTE>
<PRE>
session = nopoll_conn_socket (listener);
printf ("LISTENER: calling to close socket: %d\n");
nopoll_conn_close (listener);
</PRE>
</BLOCKQUOTE>
<BR>
...then, you should see that message, and then see if the socket is still there:<BR>
<BR>
>> ls -la /proc/3428/fd<BR>
<BR>
Certainly a working example to test would help too,<BR>
<BR>
:-? <BR>
<BR>
Best Regards,<BR>
<BR>
<BR>
<BLOCKQUOTE TYPE=CITE>
    Hi,
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BR>
    <BR>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    I want to use a websocket server as a "one-time server".
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    More clearly : I set up a noPoll listener on a defined port and I wait for a client.
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    Once the client is connected, I want to close the listener to release the port and let other instances of my program to do the same thing.
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BR>
    <BR>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    For that I use this code :
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BR>
    <BR>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <B>nopoll_bool</B> onConnReady (<B>noPollCtx</B>* wsctx, <B>noPollConn</B>* conn, <B>noPollPtr</B> data) {
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    ...
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <B>noPollConn</B>* listener = (<B>noPollConn</B>*)data;
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <I>nopoll_conn_close</I>(listener);
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    ...
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <B>return</B> <B>true</B>;
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    }
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    ...
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <B>noPollConn</B>* listener = <I>nopoll_listener_new</I>(wsctx, "0.0.0.0", port);
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    ...
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <I>nopoll_ctx_set_on_ready</I>(wsctx, &<I>onConnReady</I>, (<B>noPollPtr</B>)listener);
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BR>
    <BR>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    But when the connection is established, even after '<I>nopoll_conn_close</I>(listener)', the listening port is still used by the process :
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BR>
    <BR>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    # lsof -i
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    COMMAND    PID   ...  NODE NAME
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    my_program 3428  ...  TCP  *:29800 (LISTEN)
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    my_program 3428  ...  TCP  [me]:29800->[client]:58908 (ESTABLISHED)
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    my_program 3428  ...  TCP  [me]:57345->[client]:29254 (ESTABLISHED)
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BR>
    <BR>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    Does the listener can release the port, or do I need to rethink everything ?
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    I didn't try creating my own listener. Maybe I should ?
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BR>
    <BR>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    Thanks in advance !
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BR>
    <BR>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    
<HR>

</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
<PRE>
Félix Faisant - <A HREF="http://www.xif.fr/">xif.fr</A>
</PRE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BR>
<PRE>
_______________________________________________
noPoll mailing list
<A HREF="mailto:noPoll@lists.aspl.es">noPoll@lists.aspl.es</A>
<A HREF="http://lists.aspl.es/cgi-bin/mailman/listinfo/nopoll">http://lists.aspl.es/cgi-bin/mailman/listinfo/nopoll</A>
</PRE>
</BLOCKQUOTE>
<BR>
<TABLE CELLSPACING="0" CELLPADDING="0" WIDTH="100%">
<TR>
<TD>
<PRE>
-- 
Francis Brosnan Blázquez <<A HREF="mailto:francis.brosnan@aspl.es">francis.brosnan@aspl.es</A>>
ASPL
91 134 14 22 - 91 134 14 45 - 91 116 07 57

AVISO LEGAL

Este mensaje se dirige exclusivamente a su destinatario. Los datos
incluidos en el presente correo son confidenciales y sometidos a secreto
profesional, se prohíbe divulgarlos, en virtud de las leyes vigentes. Si
usted no lo es y lo ha recibido por error o tiene conocimiento del mismo
por cualquier motivo, le rogamos que nos lo comunique por este medio y
proceda a destruirlo o borrarlo.

En virtud de lo dispuesto en la Ley Orgánica 15/1999, de 13 de
diciembre, de Protección de Datos de Carácter Personal, le informamos de
que sus datos de carácter personal, recogidos de fuentes accesibles al
público o datos que usted nos ha facilitado previamente, proceden de
bases de datos propiedad de Advanced Software Production Line, S.L.
(ASPL). No obstante, usted puede ejercitar sus derechos de acceso,
rectificación, cancelación y oposición dispuestos en la mencionada Ley
Orgánica, notificándolo por escrito a:
ASPL - Protección Datos, C/Antonio Suárez 10 A-102, 28802, Alcalá de
Henares (Madrid).
</PRE>
</TD>
</TR>
</TABLE>
</BODY>
</HTML>