Question

J'ai un problème avec un module de ejabberd. Il est http_bind. Mais quand je debug profondément que je trouve qui acceptent après la prise et la reproduction processus et lorsque le processus LA MANUTENTION reasign pour les données nouveau processus pour recieve créé en appelant gen_tcp: controlling_process () a échoué avec badarg, POURQUOI

?

...

{ok, Socket} = get_tcp:accept(ListenSocket),
Opts = [{active, false}, ...],

% here function return result of proc_lib:spawn_link(handler, ...)
{ok, Pid} = ejabberd_http:start({gen_tcp, Socket}, Opts),

gen_tcp:controlling_process(Socket, Pid),

: {badarg, [
   {erlang, port_connect, [#Port<0.140743856>, <0.5939.4350>]}, 
   {inet, tcp_controlling_process, 2},
   {ejabberd_socket,start,4},
   {ejabberd_listener,accept,3},
   {proc_lib,init_p,5}
]}

l'aide?

Était-ce utile?

La solution

Très probablement la prise ou le processus est tombé en panne avant l'appel à controlling_process.

http://www.erlang.org/doc/man /erlang.html#port_connect-2

Pourquoi ils auraient écrasé je ne sais pas, avez-vous fait en sorte que le processus de ejabberd fonctionne comme il se doit?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top