<HTML><BODY><br>I remembered one more think.<br>Remote net.box convents nils to box.NULLs but your approach with {...} ignores it.<br>Please, change pairs({...}) to select(). Also it's interesting to see following cases: uuid and decimal (but only for 2.3+)<br>Notice that net.box:call can't send and receive functions.<p class="p1"><br>`function() return uuid() end` returns an error  in this implementation:<br>```<br></p><p class="p1"><span class="s1">- error: '[string "return require(''uuid'')():__serialize()"]:1: ''struct tt_uuid''</span></p><p class="p1"><span class="s1"><span class="Apple-converted-space">    </span>has no member named ''__serialize'''</span></p><p class="p1">```<br><br>But remote net.box returns:<br>```<br></p><p class="p1"><span class="s1">- error: unsupported Lua type 'cdata'</span></p><p class="p1"><br>```</p>Also please see <a href="https://github.com/tarantool/tarantool/issues/4602" data-mce-href="https://github.com/tarantool/tarantool/issues/4602">https://github.com/tarantool/tarantool/issues/4602</a><br><br>It seems that correct way is to use msgpack.decode(msgpack.encode()), but it will lead to performance degradation<br>so the problem should be discussed more closely.<br><br><blockquote style="border-left:1px solid #0857A6; margin:10px; padding:0 0 0 10px;">
        Четверг,  7 ноября 2019, 17:27 +03:00 от Maria Khaydich <maria.khaydich@tarantool.org>:<br>
        <br>
        <div id="">






<div class="js-helper js-readmsg-msg">
        <style type="text/css"></style>
        <div>
                
                
            <div id="style_15731368330637419560_BODY"><div class="class_1573172557">
<div>
<div>Thank you for the comment!</div>

<div>I’ve checked the behavior and previous version does not indeed cover the case with box.NULL. Suitable fix and tests were added. <br>
 </div>

<div class="mail-quote-collapse"><blockquote style="border-left:1px solid #0857A6;margin:10px;padding:0 0 0 10px;">Четверг, 7 ноября 2019, 17:08 +03:00 от Бабин Олег <<a href="mailto:olegrok@tarantool.org">olegrok@tarantool.org</a>>:<br>
 
<div id="">
<div class="js-helper_mailru_css_attribute_postfix js-readmsg-msg_mailru_css_attribute_postfix">
<style></style>
<div>
<div id="style_15731357101153771543_BODY_mailru_css_attribute_postfix">
<div class="class_1573154769_mailru_css_attribute_postfix">Maria, thanks for your patch!<br>
<br>
But as I see you don't consider the case of box.NULL that has 'cdata' type, but doesn't have<br>
__serialize metamethod.<br>
<br>
It will lead to an error:<br>
```
<p class="p1_mailru_css_attribute_postfix_mailru_css_attribute_postfix"><span class="s1_mailru_css_attribute_postfix_mailru_css_attribute_postfix">- error: '[string "return x:__serialize()"]:1: ''void *'' has no member named ''__serialize'''</span></p>

<p class="p1_mailru_css_attribute_postfix_mailru_css_attribute_postfix"><span class="s1_mailru_css_attribute_postfix_mailru_css_attribute_postfix">...</span><br>
```</p>

<div class="mail-quote-collapse">
<blockquote style="border-left-color: #0857a6;" data-mce-style="border-left-color: #0857a6;"><span>Четверг, 7 ноября 2019, 16:47 +03:00 от Maria <<a rel="noopener noreferrer">maria.khaydich@tarantool.org</a>>:</span>

<div>
<div id="">
<div class="js-helper_mailru_css_attribute_postfix_mailru_css_attribute_postfix js-readmsg-msg_mailru_css_attribute_postfix_mailru_css_attribute_postfix">
<div id="style_15731344421670538392_BODY_mailru_css_attribute_postfix_mailru_css_attribute_postfix"><br>
+ if type(res) == 'cdata' then<br>
+ results[n] = res:__serialize()<br>
+ end</div>
</div>
</div>
</div>
</blockquote>
</div>
<br>
<br>
-- <br>
Oleg Babin<br>
<style></style>
</div>
</div>
</div>
</div>
</div>
</blockquote></div>
 

<div> </div>

<div data-signature-widget="container">
<div data-signature-widget="content">
<div>--<br>
Maria Khaydich</div>
</div>
</div>

<div> </div></div></div></div></div></div></div></blockquote>
<br>-- <br>Oleg Babin</BODY></HTML>