issue #49: update howitworks.rst for command line change
This commit is contained in:
parent
db9bec8720
commit
e3d2c8d649
|
@ -26,20 +26,26 @@ implement the decompression.
|
|||
Python Command Line
|
||||
###################
|
||||
|
||||
The Python command line sent to the host is a base64-encoded copy of the
|
||||
:py:meth:`mitogen.master.Stream._first_stage` function, which has been
|
||||
carefully optimized to reduce its size. Prior to base64 encoding,
|
||||
``CONTEXT_NAME`` is replaced with the desired context name in the function's
|
||||
source code.
|
||||
The Python command line sent to the host is a :mod:`zlib`-compressed and
|
||||
base64-encoded copy of the :py:meth:`mitogen.master.Stream._first_stage`
|
||||
function, which has been carefully optimized to reduce its size. Prior to
|
||||
compression and encoding, ``CONTEXT_NAME`` is replaced with the desired context
|
||||
name in the function's source code.
|
||||
|
||||
.. code::
|
||||
|
||||
python -c 'exec "xxx".decode("base64")'
|
||||
python -c 'exec "xxx".decode("base64").decode("zlib")'
|
||||
|
||||
The command-line arranges for the Python interpreter to decode the base64'd
|
||||
component and execute it as Python code. Base64 is used since the first stage
|
||||
implementation contains newlines, and many special characters that may be
|
||||
interpreted by the system shell in use.
|
||||
component, decompress it and execute it as Python code. Base64 is used since
|
||||
to protect against any special characters that may be interpreted by the system
|
||||
shell in use.
|
||||
|
||||
Compression may seem redundant, however it is basically free and reducing IO is
|
||||
always a good idea. The 33% / 200 byte saving may mean the presence or absence
|
||||
of an additional frame on the network, or in real world terms after accounting
|
||||
for SSH overhead, up to 2.3% reduced chance of a stall during connection setup
|
||||
due to a dropped frame.
|
||||
|
||||
|
||||
Forking The First Stage
|
||||
|
|
Loading…
Reference in New Issue