Erlang ejabberd中的get_conn_类型函数是什么

Erlang ejabberd中的get_conn_类型函数是什么,erlang,ejabberd,Erlang,Ejabberd,我有ejabberd 13.12,在我将服务器移动到另一个网络之前,一切都很好,然后jabber服务器开始崩溃。(与网络类型和细节相同) 0邻居的崩溃报告进程退出,原因是:调用未定义函数 ejabberd_套接字:在p1_fsm:terminate/7行733中获取连接类型({socket_state,gen_tcp,#Port,}) 2014-01-23 09:34:42.548[错误]主管ejabberd_c2s_sup的孩子未定义从 {ejabberd_c2s,start_link,und

我有ejabberd 13.12,在我将服务器移动到另一个网络之前,一切都很好,然后jabber服务器开始崩溃。(与网络类型和细节相同)

0邻居的崩溃报告进程退出,原因是:调用未定义函数
ejabberd_套接字:在p1_fsm:terminate/7行733中获取连接类型({socket_state,gen_tcp,#Port,})
2014-01-23 09:34:42.548[错误]主管ejabberd_c2s_sup的孩子未定义从
{ejabberd_c2s,start_link,undefined}在出口处调用undefined函数
ejabberd_套接字:获取上下文子元素中的连接类型({socket_state,gen_tcp,#Port,})

机器迁移后,用户的状态被随机更改

我尝试重新安装jabber服务器,并使用从头编译的ejabberd 2.1.13,这给了我使用jabber时相同的错误

功能是:

get_conn_type(StateData) ->
 case (StateData#state.sockmod):get_sockmod(StateData#state.socket) of
 gen_tcp -> c2s;
 p1_tls -> c2s_tls;
 ezlib ->
    case ezlib:get_sockmod((StateData#state.socket)#socket_state.socket) of
        gen_tcp -> c2s_compressed;
        p1_tls -> c2s_compressed_tls
    end;
 ejabberd_http_poll -> http_poll;
 ejabberd_http_bind -> http_bind;
 _ -> unknown
 end.
  • 我想了解这个功能(优秀的pythoner,从不使用erlang),并添加hack或指出问题:sth是ejabberd特定的还是带有套接字的sth(但其他网络工具/服务工作得很完美)

    a) 我如何插入到该函数的交互式调试器中,并从中获得堆栈和变量的交互式内省


  • 您看到的错误消息表明,
    ejabberd\u套接字
    模块中不存在
    get\u conn\u type
    函数。这是真的;在标准ejabberd发行版中,
    get_conn_type
    位于
    ejabberd_c2s
    模块中


    如果您确定您和其他任何人都没有修改源代码,那么我将检查您的Erlang安装。可能是它坏了,或者您正在使用不同的版本编译和运行代码。

    谢谢,我看到了“调用未定义函数”,但编译没有错误,从包中安装了另一个ejabberd也没有错误-两个版本都不同,并且给我相同的错误。非常奇怪。尝试删除Erlang并重新安装它。这就是我所能想到的——由于坏的.beam文件的内存损坏,您可能会收到无用的错误消息。