Hello,

since a couple of days I am experiencing a problem when I am restarting 
prosody: prosody basically stops working, because it cannot open the ports it 
needs.

>From the log:

Feb 19 10:09:59 example.com:http warn    Not listening on any ports, 
'altconnect' will be unreachable
Feb 19 10:09:59 example.com:http warn    Not listening on any ports, 
'websocket' will be unreachable
Feb 19 10:09:59 example.com:http    warn    Not listening on any ports, 'bosh' 
will be unreachable

Netstat says that a bash script is listening on the 5222 port O_o

netstat -avpntu | grep 5222
tcp        0      0 0.0.0.0:5222            0.0.0.0:*               LISTEN      
17137/bash      
tcp      161      0 127.0.0.1:5222          127.0.0.1:38753         CLOSE_WAIT  
-               
tcp      161      0 127.0.0.1:5222          127.0.0.1:38765         CLOSE_WAIT  
-               
tcp      161      0 127.0.0.1:5222          127.0.0.1:38785         CLOSE_WAIT  
-               
tcp      161      0 127.0.0.1:5222          127.0.0.1:38782         CLOSE_WAIT  
-     

Querying ps gives me this:

prosody  17137  0.0  0.0  12428  1448 pts/7    Ss+  Feb18   0:00 /bin/bash 
/opt/prosody_auth_provider.sh
prosody  17139  0.0  0.0  12428  1448 pts/8    Ss+  Feb18   0:00 /bin/bash 
/opt/prosody_auth_provider.sh
prosody  17141  0.0  0.0  12428  1448 pts/9    Ss+  Feb18   0:00 /bin/bash 
/opt/prosody_auth_provider.sh
prosody  17143  0.0  0.0  12428  1448 pts/10   Ss+  Feb18   0:00 /bin/bash 
/opt/prosody_auth_provider.sh
prosody  17151  0.0  0.0  12428  1448 pts/11   Ss+  Feb18   0:00 /bin/bash 
/opt/prosody_auth_provider.sh
prosody  17154  0.0  0.0  12428  1444 pts/12   Ss+  Feb18   0:00 /bin/bash 
/opt/prosody_auth_provider.sh
prosody  17157  0.0  0.0  12428  1448 pts/13   Ss+  Feb18   0:00 /bin/bash 
/opt/prosody_auth_provider.sh
prosody  17159  0.0  0.0  12428  1444 pts/14   Ss+  Feb18   0:00 /bin/bash 
/opt/prosody_auth_provider.sh
prosody  17164  0.0  0.0  12428  1448 pts/15   Ss+  Feb18   0:00 /bin/bash 
/opt/prosody_auth_provider.sh
prosody  17168  0.0  0.0  12428  1448 pts/16   Ss+  Feb18   0:00 /bin/bash 
/opt/prosody_auth_provider.sh


Apparently after restarting the prosody daemon, the lua process is killed, but 
the external authentication scripts remain alive, thus blocking the ports used 
by prosody before being stopped.

I am using mod_auth_external.html 
(https://modules.prosody.im/mod_auth_external.html) for a virtual host. I am 
also using libevent.

VirtualHost "example.com"

    authentication = "external"
    external_auth_command ="/opt/prosody_auth_provider.sh"
    external_auth_protocol = "generic"
    external_auth_processes = 10


The prosody_auth_provider.sh script is basically the same example file for the 
module:  
https://hg.prosody.im/prosody-modules/file/50c188cf0ae3/mod_auth_external/examples/bash/prosody-auth-example.sh

So when prosody starts the first time it spawns 10 external auth processes. But 
prosody or the operating system does not kill this child processes before 
stopping prosody.
Thus when the prosody process is killed (SIGTERM) the ports are inherited to 
the external auth scripts (O_o ?), meaning that when a new prosody process 
starts it cannot bind to the ports anymore.

Killing the external auth processes and restarting prosody does solve the 
problem.


Any ideas?

Kind regards  

Rainer Schuth 

-- 
You received this message because you are subscribed to the Google Groups 
"prosody-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to prosody-dev+unsubscr...@googlegroups.com.
To post to this group, send email to prosody-dev@googlegroups.com.
Visit this group at https://groups.google.com/group/prosody-dev.
For more options, visit https://groups.google.com/d/optout.

Reply via email to