Erlang案例表达式没有返回值

时间:2016-04-07 16:16:35

标签: encryption erlang xmpp aes ejabberd

下面是我用来解密之前加密的某些XML的代码片段。如果它没有加密(纯文本),那么我不需要解密和处理它,我想按原样返回它。

根本没有返回任何东西。请帮我把它搞定。

更新代码:

pop_offline_messages(Ls, LUser, LServer, odbc) ->
    EUser = ejabberd_odbc:escape(LUser),
    case odbc_queries:get_and_del_spool_msg_t(LServer,
                          EUser)
    of
      {atomic, {selected, [<<"username">>, <<"xml">>], Rs}} ->
      Ls ++
        lists:flatmap(fun ([_, XML]) ->
        ?INFO_MSG("decrypted message from mod_offline ~p ",[XML]),

       Top = case str:str(XML, <<"message">>) of
       Top >= 1 -> XML;
       Top == 0 -> crypto:aes_cfb_128_decrypt(<<"abcdefghabcdefgh">>,<<"12345678abcdefgh">>,base64:decode(XML))
    end,  
           case xml_stream:parse_element(XML) of
                    {error, _Reason} ->
                                          [];
                    El ->
                                          case offline_msg_to_route(LServer, El) of
                                              error ->
                                                  [];
                                              RouteMsg ->
                                                  [RouteMsg]
                                          end
                  end
              end,
              Rs);
      _ -> Ls
    end;

1 个答案:

答案 0 :(得分:1)

如果它“没有返回任何内容”,则可能是因为您没有执行它,或者您没有存储结果。我建议你将代码更改为:

Result = case str:str(XML, <<"message">>) of
      1 -> XML;
      _ -> crypto:aes_cfb_128_decrypt(<<"abcdefghabcdefgh">>,<<"12345678abcdefgh">>,base64:decode(XML))
    end,
io:format("~p~n",[result]),
...

因为使用此当前代码段版本,案例的结果不会被使用,所以一旦评估就会丢失。