Release Notes
=============

4.4.7 (2018-12-10)
------------------

* mudfish

  * Fixes the integer overflow issue for the item ID so it'll support
    more no of items.

  * 14.63.198.203 IP isn't no longer a part of mudfish web server.

  * Fixes the connection retry issue to the mudfish authentication server
    when it failed to connect.

* mudrun

  * Fixes a problem while uploading the packet dump to the mudfish master
    server.

  * Shows the realtime traffic usages while Mudfish Launcher was running.

  * Fixes an issue to find the default browser in Windows 10.

  * Be more verbose if SSL connection error encountered.

4.4.6 (2017-09-28)
------------------

* mudfish

  * Saves the memory resources to handle re(4) interfaces when it try to
    connect to multiple mudfish nodes.

  * Adds new mudfish master server IPs to bypass the traffics even if
    Full VPN mode is enabled.

* mudflow

  * Fixes a crash while RTT checking is performing.

* mudrun

  * Uses DNS lookup for mudfish.net to apply the rounding robin balancing.

4.4.5 (2017-07-13)
------------------

* mudflow

  * Don't enable the debugging library of Windows not to cause the assertion
    failure if the file descriptor is invalid for write(2).

* mudfish

  * Now as default it doesn't fetch all IP information when it's signed in.
    It'll be fetched whenever it requires to access a mudfish node if
    necessary.

  * No assertion failure if it failed to set SIO_UDP_CONNRESET flag for
    the socket.

  * Handles ERROR_OPERATION_ABORTED properly.

  * Handles a failure case of sysctlbyname() properly.

  * Changes some error log levels.

* mudrun

  * Implement the packet dump upload for linux.

  * Be more verbose which options are enabled when it's launched.

  * Show a warning messages if the traffic usage hits the speed cap if
    the user's data plan is Subscription.

4.4.4 (2017-02-19)
------------------

* mudflow

  * Set the interesting flag for backends set by the user.  If it's not one
    of interesting nodes, it'd not pick a node for Auto Selection.

  * Not too aggressive to measure RTT values from user's desktop to mudfish
    nodes.

  * Fixes a race condition to limit maximum no. of RTT calculation

  * Fixes a crash if creating the non-blocking socket was failed.

* mudfish

  * Try to use other utun(4) interface if it's busy for Mac OS X.

  * Sends RST packet too if the back-end connection is aborted by RST packet
    for FastConnect mode.

  * Fixes a crash of CLI commands when it tries to resolve the domain
    name.

  * Sets TCPNoDelay and TcpAckFrequency for TAP-Win32 adapter properly.

  * Fixes a bug to fetch the mudfish nodes if no. of nodes are over 256.

* mudrun

  * Adds ``-P`` option to set the listening port.

4.4.3 (2016-11-25)
------------------

* mudfish

  * Be more verbose for MUDEC_00043.

* mudflow

  * Implemented Matt's traceroute to analyze the packet loss rate and
    hop status.

  * Fixed a crash case if no. of DNS address is reached the limit.

  * Improved the RTT checking speed.

* mudrun

  * Reports the packet loss rate between mudfish nodes and user desktop
    to the master server.


4.4.2 (2016-10-17)
------------------

* mudfish

  * Shows MUDEC_00314 error messages properly.

  * Fixes a bug to set the proxy ARP information.

  * Fixes an issue if TOL_socket(2) failed to allocate the socket due to
    out of memory.

* mudflow

  * Fixes an issue trying to add wrong SID information when the hostname
    is involved.

  * Handles the deletion of routing table properly.

* mudrun

  * Add '-t' option for Mac OS X client.

  * Shows MUDEC_00255 error message properly for Windows.

4.4.1 (2016-09-05)
------------------

* mudrun

  * Fixes OpenSSL dependency issue for El Capitan.

  * Fixes a bug to show the Real-time Traffic Graph for Mac OS X.

  * Reset the program when the core processes are started by
    re-signing in.

* mudfish

  * Fixes a crash caused by setsockopt(2) failure.

  * Handles a error level properly for MUDEC_00314.

4.4.0 (2016-08-03)
------------------

* muddiag

  * Updates a internal IP for testing.

* mudfish

  * Be verbose if the connection to mudfish nodes is re-established.

  * When the connection is retried, limits a maximum waiting time for
    10 seconds.

  * Fixes an assertion issue for mutex lock hold.

  * Terminates the process if the parent process is exited for Linux.

  * Handles EMSGSIZE error code for linux.

  * Handles EADDRNOTAVAIL and ENETDOWN error codes for Mac OS X.

  * Fixes a bug to upload the packet dump file.

* mudflow

  * Terminates the process if the parent process is exited for Linux.

  * Be more verbose for select(3) timeout.

* mudrun

  * Fixes a bug to show the selected node information if "Auto Selection"
    option is enabled for the item.

  * Be verbose for auto-configuration information.

  * Terminates the process if the parent process is exited for Linux.

4.3.19 (2016-04-27)
-------------------

* mudflow

  * Fixes an issue to add or delete routing table entries per hostname.

  * Fixes a locking order reversal.

  * Don't call getaddrinfo(3) with holding routing table lock.

* mudfish

  * Adds two more connection protocols; UDP port 500 and TCP port 1723
    to communicate with mudfish nodes.

  * Fixes a crash from rtexpunge().

  * Reverts ICMP bypassing feature for FastConnect mode.

  * Fixes strlcat() function issue for Mac OS X.

* mudrun

  * Fixes a problem to calculate no. of routing table entries.  With this
    problem, the auto configuration progress could be wrong.


4.3.18 (2016-04-05)
-------------------

* muddiag

  * On Linux and Mac OS X, sending the problem report is now supported.

* mudfish

  * 'ifconfig' command of CLI enhanced and with multiple bug-fixes.

  * Fixes a crash if ICMP redirect packet is returned by hops.

  * Fixes a bug of re(4) device that it doesn't reconnect to the node
    if no RX packets are delivered.

  * Bypass all other protocols except TCP and UDP if FastConnect mode is
    enabled.

  * Fixes an assertion error if it failed to set the default gateway.

  * Liunx

    * Uses iproute2 tool rather than net-utils.

  * Mac OS X

   * Fixes a bug of setting or deleting the routing table entries.

* mudrun

  * Fixes a bug to handle hostname based item that with this bug,
    auto-configuration isn't completely properly.

  * Fixes a bug that sometimes Windows 7 or 8 try to open Windows Edge
    browser.

4.3.17 (2016-03-30)
-------------------

* mudflow

  * Fixes a bug of ADN mode setting if multiple routing paths exist.
    With this patch, a time to set advanced node mode for each item would
    be reduced.

* mudfish

  * Don't retry if fetching static nodes was failed because it could make
    IP conflict.

  * Changes log level of some error messages.

  * Uses utun(4) device as default.  So no longer we need to install tuntap
    driver.

* mudrun

  * Properly find a default browser setting for Windows 10.

4.3.16 (2016-03-19)
-------------------

* muddiag

  * Fixes a wrong test cases for internal network because no longer all
    mudfish nodes become active.

* mudflow

  * Reduces no. of RTT checking to complete the auto selection of mudfish
    nodes.

  * Don't check real-time RTT for items if FastConnect mode turns on.

* mudrun

  * Fixes a truncated string issue for macros.

* mudfish

  * Fixes command launcher if multiple lines are ready on pipe.

  * Warns if command emitting was short.

  * As default, it sets detour routes to all mudfish nodes if Full VPN mode
    is enabled.

  * Be quite if TOL_accept(2) returns ECONNABORTED.

4.3.15 (2016-03-01)
-------------------

* mudfish

  * Supports HA (High Availability) mode.  But the default is off at this
    moment.

  * Tags warning and error messages.

  * As default, now Mudfish core doesn't connect to all mudfish nodes.
    It's enabled when explicitly user uses the mudfish node.

  * Fixes FastConnect mode + ADN (server-chain) mode issue.

* mudflow

  * Supports RTT measurement for equipped items.  Its interval is
    10 seconds.

  * Fixes a crash by assertion if socket(2) failed.

  * Supports HA (High Availability) mode.  But the default is off at this
    moment.

  * Fixes a invalid warning for routing setup if hostname is used for
    Mudfish item and duplicate IP address is resolved.

* mudrun

  * Supports HA (High Availability) mode.  But the default is off at this
    moment.  It's enabled by -H option.

  * Fixes an assertion failure for CloseHandle().

  * Adds a hook to enable the bind to mudfish nodes because as default it's
    off.

  * Adds real-time RTT hook to show current RTT graph for equipped items.

4.3.14 (2016-01-07)
-------------------

* mudfish

  * re(4): If too many ENOENT error happens, explicitly limits the logging
    count.

  * re(4): Don't reconnect the connection if it's a fragmented packet issue.

  * re(4): Sleep 1 second whenever the connection retry happens.

  * Fixes a crash due to out of band packet.

  * Changes the default error level for MUDEC_000279.

  * No more mudfish_stderr.txt log file.

  * Extended the mudfish IP coverage from 10.248.0.0/13 to 10.240.0.0/12
    due to too many mudfish nodes.

  * Throttles MUDEC_00086 errors.

  * Explicitly exits mudfish core process if too many heartbeats are failed or
    heartbeat gaps between previous and current is quite big.

  * Be more verbose for various error codes.

* mudflow

  * No more mudflow_stderr.txt log file.

  * Re-fetch the static node information when it's explicitly set to be
    called.

* mudrun

  * Show connect(2) error and proper message why the connection was failed.

  * No more mudrun_stderr.txt log file.

  * Fixes some error message formatting issues.

  * Show the error code number from CloseHandle().

4.3.13 (2015-12-08)
-------------------

* mudfish

  * (Windows only) Adds a feature to use IP helper for assigning IP address
    and dns.

  * Supports a graceful shutdown.

  * Handles EMSGSIZE error smoothly that now it allows IP fragmentation
    to mudfish node but explicitly show a error message.

* mudflow

  * Only submit or delete the routing table entry if it'd submitted or new.

4.3.12 (2015-12-01)
-------------------

* Common

  * No more TASKKILL error message on console log.

  * Fixes a bug to calculate the time difference on Windows box.

* Mac OS X

  * Added a background image for dmg file.

* mudfish

  * Be less verbose for msk(4) error case.

  * Shows timestamp for each logs.

  * Prints a message explicitly if Full VPN mode is enabled.

  * If sending the heartbeat to the master server, it try to other IP address
    and port.

  * Adjusts the log error level for MUDEC_00179.

  * Sets IP_DONTFRAGMENT for re(4) device to get explicit error message from
    cached MTU of operating system.

* mudflow

  * Fixes an issue that a command to delete the route is sent to Core
    even if it's not submitted.

  * Fixes a bug that it doesn't handle a shared memory event properly.

* mudrun

  * Be more verbose for error messages and assigned a unique ID.

  * Show the packet loss rate message with proper error level and ID.

  * Try to use Internet Explorer if the windows registry has unexpected
    entry.


4.3.11 (2015-11-23)
-------------------

* mudfish

  * Uses SSL port even if -f flag is on to bypass some network firewalls.

  * Don't set default gateway unless -f flag is on.  It means that default
    behavior of mudfish is drop if the packet routing isn't found.

  * Supports domain-based custom item.

* mudflow

  * Default timeout for RTT checking is changed from 3 seconds to 1 second.

  * Removes unnecessary code and overheads.

    * Don't check any dynamic IP addresses monitored by programs.

    * Fetch only one time for mudfish node list.

  * Be less verbose and prints timestamp per each logs.

  * Reports the packet loss rate for mudfish nodes used by user.

* mudrun

  * Fixes an issue that the routing table list isn't sweeped if it's
    signed out.

  * Supports JSON responses for mudfish node RTT information and virtual
    devices.

  * Supports CLI interface by UI.

4.3.10 (2015-11-13)
-------------------

* mudadm

  * Improve the connection timeout stuff.  Now it doesn't require 1 second
    delay to be finished.

* muddiag

  * Checks more port checks to authentication servers.

* mudfish

  * Fixes old bug of CLI getopt that it didn't properly be re-initialized
    for next command.

  * Improves the ready time for TCP protocol.

  * Changed the order to set ARP proxy.

* mudflow

  * Fixes a assertion failure if there are any problem to close the file
    descriptor.

* mudrun

  * Now the default IPv4 address and port for authentication is changed
    not to be blocked by network firewall.

  * Checks the mudfish process more clearly when the diagnosis is
    processing.


4.3.9 (2015-11-02)
------------------

* muddiag

  * Enhances more firewall tests to port 80 and 443.

* mudfish

  * msk(4): MUDEC_00138 error should be shown if the packet length is larger
    than zero.

  * ICMP redirect packet is dropped as default.

  * DHCP lease time is changed from 1 day to 1 month.

  * OpenBSD PF (Packet Filter) is enabled as default.  So you can configure
    your own firewall rules using CLI interface.

* mudrun

  * Implements a self diagnosis feature for configuration setup.

4.3.7 (2015-10-05)
------------------

* mudfish for Android

  * Fixes a login issue that main view isn't shown properly if it exits
    by user or system.

* muddiag

  * Outpus 'tasklist' result also.

* mudfish

  * Enables IFF_BPF flag if the shared memory tag is set.

* mudrun

  * Supports packet dump feature

  * Shows process lists.

4.3.6 (2015-09-28)
------------------

* mudfish for Android

  * Fixes an issue that installation path could be relative depending on the
    device.

  * Fixes an issue that on some devices PIE isn't enabled but Android 5.x API.

  * Enables log redirection.

  * Explicitly omits Private IP range.

  * Implements sending the problem report.

* mudfish

  * less verbose for TCP relay if it's not reachable to the back-end.

* muddiag

  * Fixes a bug that -o option is enabled.

* mudrun

  * Reports a error level 0 from mudrun itself.

* Support Chrome and Firefox browser now as extension!

4.3.2 (2015-08-18)
------------------

* mudfish

  * Be more verbose for re(4).

  * No more check Giant lock assertion for ithread loop.

  * Reports an error if multiple nodes aren't reachable.

  * Removes MUDEC_00087 error code to remove false alert.

  * Fixes an assertion failure if it failed to get panel information from
    windows registry.

4.3.1 (2015-08-15)
------------------

* muddiag

  * Supports Windows 8.1, Windows Server 2012 R2 and Windows 10.

* mudfish

  * Only show error or warning messages for re(4) if it's really in use.

* mudrun

  * Enhances App icons for retina display.

  * Fixes an assertion failure that receiving buffer isn't enough.

  * Fixes an issue if string length of username and password is too long.

4.3.0 (2015-08-03)
------------------

* Supports Windows 10.

4.2.9 (2015-07-15)
------------------

* UI

  * Support WPAD feature at v4.

* muddiag

  * Be verbose about when this diagnostic is executed.

* mudflow

  * Fixes an issue that the back-end pointer could be released while RTT
    checking is running.

  * Checks the return value from fclose(3) to make sure the argument is
    valid.

  * Checks that the traffic log is working correctly.  If not, exit
    the process.

* mudrun

  * Fixes an issue whish happens the auto login feature turns on.

* mudfish

  * Be verbose for error messages.

4.2.8 (2015-05-26)
------------------

* Android

  * Support android 5.x lollipop.

  * Fixes some minor bugs.

* mudrun

  * Fixes an assertion failure.

* mudfish

  * Handles EPIPE if write(2) returns it.

  * Be more verbose when errors happen.

  * Fixes an issue when ARP information is moved.

  * Implements tcp_mtudisc().

  * Uses mudfish's DNS server as default for Full VPN mode.

4.2.7 (2015-01-28)
------------------

* From this release, Mudfish is supporting Android.

* mudrun

  * FIxes a crash if too many new IPs are found in a loop.

* mudfish

  * Marks a error number for re(4) virtual device.

  * Changes some error log levels and messages to show more human-readable.

  * Adds -B option for mudfish to be daemon mode.

  * Fixes an assertion failure for Mac OS X if /dev/tap7 isn't available.

  * Fixes an assertion failure from UDP relay if recvmsg(2) returns 0.

4.2.5 (2014-12-16)
------------------

* mudfish

  * Fixes a bug of UDP relay not to release inactive UDP sockets.

  * For re(4) / msk(4) / zyd(4) virtual device, no keeping internal mbuf
    queues to avoid the race condition.

  * Handles some exception cases for TCP connections to the backend.  Now
    it will retry to connect when the malformed packets are delivered.

* mudflow

  * Fixes a issue to set a ADN path which synchronizes without stop.

* mudrun

  * Be more strict to check the read size.

  * Protects the statistic information with holding the lock.

  * Code cleanups for unnecessary parts.

4.2.4 (2014-11-05)
------------------

* mudfish

  * Fixes an issue that mudfish core is crashed if no more credits are
    available.

  * Supports tun(4) device for linux.

  * Prints a error message correctly when the mac address is changed in a
    view of ARP.

  * Fixes an bug that Point-To-Point interface couldn't set a ARP proxy
    entry.

  * Don't print the debugging messages as default.

  * Checks the error code from recvmsg(2) for UDP relay and show the error
    message.

  * arp CLI commands are enhanced.

4.2.3 (2014-10-27)
------------------

* mudflow

  * Fixes a crash when the routing table is changed quickly to set the ADN
    mode.  The routing table entries would use the reference counter.

  * Adds a exceptional rule that information from uTorrent.exe aren't
    collected.

* mudfish

  * Tags error messages.

  * Fixes an issue that checking the lock holder wasn't do correctly.

  * Implements ip_insertoptions() to add IP options.

  * Adds '\n' to print some error messages.

  * Don't show MUDEC_00179 error message if the TCP protocol is used to
    connect to the backend.

  * Checks the IP address going to the local IP address zone.

4.2.2 (2014-10-20)
------------------

* No longer need to restart the program for some cases as follows:

  * if new item is bought.  Automatically the game setting is configured.

  * if changing the mudfish node is happened for a item.

  * if node for Full VPN is changed simply.

4.2.1 (2014-10-17)
------------------

* Fixes an assertion failure when it try to do the auto-login.

* Increases the buffer size for HTTP response body for a edge case.

* Fixes an assertion failure for tcp_drop_syn_sent() if TCP connection is
  aborted while it sends SYN packet.

* Some UDP relay problems.

  * No more assertion failure if it could not find a back-end for relaying

  * No more assertion failure if TOL_socket(2) is failed by unknown reason
    Explicitly it prints the error.

4.2.0 (2014-10-13)
------------------

* Overhauls FastConnect mode.  All FastConnect related codes are rewritten
  based on new approach.

* Calculates Path MTU when the program is ran.

* Enhanced a feature to bypass the firewall

* mudfish

  * No longer keep the msk(4) driver-specify queue for TX not to be raced
    by multiple threads.

  * SO_BLACKHOLE flag is introduced to bypass all forwarding packets.

  * Added IP_SENDSRCSOCKADDR_IN option to override the source port.

  * Removed -I option.

  * Adds a default IP of master server if the full vpn mode turns on
    not to handle a connection through other nodes.

4.1.1 (2014-10-07)
------------------

* muddiag

  * Adds more testing cases.

* mudrun

  * Fixes a bug for Full VPN mode that the connection to the master server
    isn't properly reseted.

  * Records RTT information more when it's accessing the Setting menu.

* mudfish

  * On linux, it shows the exact time per each message logs.

  * Removes -n option; no longer used

  * Fixes a bug for Full VPN mode that it doesn't properly connect to the
    master server.

  * Extend IP range used by Mudfish Network from 10.252.0.0/14 to
    10.248.0.0/13.

* misc

  * Code signing again.

4.1.0 (2014-09-30)
------------------

* mudflow

  * Multiple code cleanups that no longer sqlite3 is used and obsoleted
    ADN mode is removed.

  * Reporting the port number for FastConnect mode is enhanced.

  * Supports FastConnect mode correctly for v4

* mudrun

  * Fixes an issue that logout takes at least 5 seconds.

  * Supports more UI menus; e.g. showing the log messages and status.

  * Supports notification from web or desktop.

  * Adds a version tag when thr crash is reported.

* mudfish

  * Removes -t option for cleanup.

  * Supports new ADN mode.

  * Fixes a bug that sending the heartbeat isn't handled correctly.

  * Fixes a crash if there are too many entries for FastConnect mode.

  * For 'netstat' of CLI command, it now shows that UDP bind ports.

4.0.14 (2014-09-17)
-------------------

* muddiag

  * Cleans up code not to be used anymore and hosts

* mudrun

  * As default, SSL connections are used for the front-end and back-end.

  * Fixes a issue that the shared memory isn't ready when other process is
    reading.

  * Don't use CDN for mudrun accesses to avoid 502 (Bad Gateway) error.

* misc

  * The session is kept as permanent unless explicitly it's requested.

  * Being more verbose for mudrun and mudflow logs.


4.0.13 (2014-08-13)
-------------------

* Fixes a crash when msk(4) calls m_freem() function at same time by multiple
  threads.