<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">On 12/24/2012 01:07 AM, Jeffrey Rennie
      wrote:<br>
    </div>
    <blockquote cite="mid:00d001cde16a$9a795bc0$cf6c1340$@com"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html;
        charset=ISO-8859-1">
      <meta name="Generator" content="Microsoft Word 12 (filtered
        medium)">
      <style><!--
/* Font Definitions */
@font-face
        {font-family:"MS Mincho";
        panose-1:2 2 6 9 4 2 5 8 3 4;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"\@MS Mincho";
        panose-1:2 2 6 9 4 2 5 8 3 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
      <div class="WordSection1">
        <p class="MsoNormal">Before I draft a formal EEP,<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Windows firewall is enabled by default, and
          blocks sockets used by erlang.  Yes, exceptions can be added
          to the firewall, however, this is not possible in some
          situations.  For example:<o:p></o:p></p>
        <p class="MsoNormal">1.  A corporate network with strict
          policies that prohibit opening ports used by erlang.<o:p></o:p></p>
        <p class="MsoNormal">2.  An application written in erlang that
          installs without administrator privileges.<o:p></o:p></p>
        <p class="MsoNormal">3.  (A generalization of the above) 
          Whenever the user who wants to run erlang is not an
          administrator.<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">In these environments, an alternative to
          sockets which get entangled in the firewall, is Win32 named
          pipes which do not get entangled in  the firewall.<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Therefore, I propose a change that will
          allow erlang nodes to communicate over named pipes in addition
          to sockets.  Of course, it would be controlled by command-line
          parameters.<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">I've spent a day browsing the erlang source
          code and it looks pretty doable.<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Comments and questions please.</p>
      </div>
    </blockquote>
    <br>
    Good idea! There is actually no need to change anything in the
    Erlang VM to do that. The distribution mechanism is pluggable, so
    you can write a driver that uses any protocol where you can setup a
    stream of bytes between nodes (ok, that sounds easier than it really
    is, but it's absolutely doable). There is an example in the kernel
    source code ($ERL_TOP/lib/kernel/examples/uds_dist) where
    distribution is set up using Unix named pipes, which is of course
    more limited, but shows the general idea of how to implement a
    distribution driver. <br>
    <br>
    <blockquote cite="mid:00d001cde16a$9a795bc0$cf6c1340$@com"
      type="cite">
      <div class="WordSection1">
        <p class="MsoNormal"><o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">P.S. It took me about 5 hours to
          successfully build on Windows; I had most of the tools like
          Visual Studio and cygwin installed.  I got tripped up by git
          switching LFs to CRLFs, which chokes bash.  Also, it's much
          faster to just run vcvars32.bat and then run bash than to
          write your own script that sets the vc environment variables.<o:p></o:p></p>
      </div>
    </blockquote>
    Yes, it's a pain. The CRLF defaults of msysgit is also a pain. Using
    vcvars32 directly may definitely be a shortcut, maybe you could add
    some section to the windows readme about your approach? <br>
    <blockquote cite="mid:00d001cde16a$9a795bc0$cf6c1340$@com"
      type="cite">
      <div class="WordSection1">
        <p class="MsoNormal"><o:p> </o:p></p>
      </div>
      <br>
    </blockquote>
    Cheers,<br>
    /Patrik<br>
    <blockquote cite="mid:00d001cde16a$9a795bc0$cf6c1340$@com"
      type="cite">
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
erlang-questions mailing list
<a class="moz-txt-link-abbreviated" href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a>
<a class="moz-txt-link-freetext" href="http://erlang.org/mailman/listinfo/erlang-questions">http://erlang.org/mailman/listinfo/erlang-questions</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>