Hi all,<br><br>Nobody replies my question about IRC Lite, so I ask it the second time (Change the title in hoping that it may cause some attention). And I notice that someone asked about some other questions about IRC Lite before, which may suggest this example is tricky.<br>
<br>So my here is my question, if a
process sends another process several messages <b>in a row</b> while in the receiving process when it processes the first message, it does that in its own receiving loop, then all the remaining message the first process sends goes into this loop and this may against the purpose.<br>
<br>My words may sound nonsense. So check these codes,<br><br>In the chat_client.erl,<br><br>try_to_connect(Parent, Host, Port, Pwd) -><br>        ...<br>        Parent ! {<b>connected, MM</b>},<br>        exit(<b>connectorFinished</b>)<br>
    end.<br><br>While in parent <b>disconnected/3</b>, <br>
...<br>    receive<br>    {<b>connected, MM</b>} -><br>        lib_chan_mm:send(MM, {login, Group, Nick}),<br>        <b>wait_login_response</b>(Widget, MM);<br>     {<b>'EXIT', _Pid, _Reason</b>} -> %% if we add this clause here<br>
...<br><b>wait_login_response/2</b> defines,<br>
...<br>     receive<br>     ...<br>     Other -><br>        io:format("chat_client login unexpected:~p~p~n",[Other,MM]),<br>...<br><br>The
result shows that wait_login_response/2 receives try_to_connect's 'EXIT' message not
disconnected/3. I further test that if try_to_connect sends more
messages after {<b>connected, MM</b>} , they will all be received by
wait_login_response instead of disconnected/3 even there are match
patterns in disconnected/3 (Correct me if I am wrong). But this may not be a good idea. Maybe it is better to let disconnected/3 processes the 'EXIT' message instead of wait_login_response/2 (because it should only deal with the login related message). So how do we fix this problem ?  Or I miss something here ?<br>
<br>Thanks,<br><br>Qiulang<br>