Commit Graph

58 Commits

Author SHA1 Message Date
Keegan McAllister 67a85eaf99 Deliver sendto() exceptions without disturbing control flow
This prevents the client from waking up every 200 ms while the network is down.
Addresses #243.
2012-05-09 14:19:46 -04:00
Keith Winstein 43182729ec More graceful output from failed verification 2012-05-05 01:53:28 -04:00
Keith Winstein 3573cec92a Enable round-trip verifier in verbose mode 2012-05-05 01:46:22 -04:00
Keith Winstein a82f50f085 Improve lossy connections by sending diff from "known" state if it's easy 2012-05-04 23:06:20 -04:00
Keith Winstein ce47d1f769 Fix bug in retransmission logic (improves performance on lossy links) 2012-05-02 23:55:13 -04:00
Keith Winstein 2ea3f3a347 Warn when server has not heard from us (even if we have heard from server) 2012-04-30 22:43:45 -04:00
Massimo Gengarelli 49fc21c8a3 Catch by const reference (remove Eclipse warnings)
(closes #245)
2012-04-29 02:24:31 -04:00
Keith Winstein 22e7cf60d3 Keep aligned buffers around, instead of allocing on each packet
Fixes #238 github issue.
Also fixes armel "Bad alignment" problem.
2012-04-24 18:40:01 -04:00
Keith Winstein 63459ed1c7 Revert use of protobuf's Gzip streams.
Unfortunately some Red Hat-based distributions lack the required header.
See https://bugzilla.redhat.com/show_bug.cgi?id=815587

This reverts commit 261a389a76.
This reverts commit b6736eb0a5.
2012-04-23 22:50:49 -04:00
Anders Kaseorg b6736eb0a5 Use protobuf’s Gzip{Input,Output}Stream wrapper around zlib
This removes our direct zlib dependency (although of course protobuf
still uses it internally), removes a fixed 4 MiB buffer and its
corresponding limit on the terminal size, reduces some string copying,
and deletes some code.

Signed-off-by: Anders Kaseorg <andersk@mit.edu>

(Closes #230.)
2012-04-22 16:14:28 -04:00
Keith Winstein 8de74afb5f Restore 50 fps cap on frame rate (relevant to #222 github issue). 2012-04-19 23:00:12 -04:00
Keith Winstein 3c6e45a469 Adjust timing parameters in response to real-world trace data.
Also increases maximum frame rate from 50 fps to 100 fps.

Relevant to issue #222 on github.
2012-04-19 22:40:03 -04:00
Keith Winstein 58589787ea Make compressor take string references (closes #214 github issue) 2012-04-19 01:35:15 -04:00
Keith Winstein feb352c809 Optional verifier for round-trippability, and fix wrapping and tab bugs. 2012-04-16 09:09:20 -04:00
Keith Winstein a8c3df9c80 More robust shutdown sequence with warning on unclean shutdown. 2012-04-16 06:22:35 -04:00
Keith Winstein 99e8626a01 Tidy check for exception in Network::Connection::send(). 2012-04-15 23:29:05 -04:00
Keith Winstein aca69ef684 Server does not need to raise exception on failed sendto(). Fixes #183. 2012-04-15 23:13:58 -04:00
Keegan McAllister cd2d482484 Don't use *_t for our own typedefs
It's reserved by POSIX.

(closes #158 pull request)
2012-04-15 13:50:18 -04:00
Keegan McAllister 8bcc001b52 Remove Boost entirely 2012-04-15 13:49:15 -04:00
Keegan McAllister 83694977a7 Remove boost::lambda from transportsender.cc 2012-04-15 13:49:15 -04:00
Keegan McAllister 5904d4f5e6 Remove BOOST_AUTO from transportsender.cc 2012-04-15 13:49:15 -04:00
Keith Winstein 7be90ae244 Close server-related file descriptors before executing child process
Closes #170 github issue.
2012-04-13 13:48:56 -04:00
Keegan McAllister d2434d1a79 Check compiler support for -fno-default-inline and -pipe
clang was spewing warnings about the unrecognized -fno-default-inline.  (Oddly,
it warns only with -c, not when compiling directly to an executable.)  For
completeness we also check -pipe, even though clang is OK with that one.

It should be fine to omit either flag.  gcc -fno-default-inline drops the
implicit 'inline' annotation on functions defined inside a class scope, but
'inline' is only a hint anyway.  -fno-default-inline does not change linkage.
-pipe is merely a compile speed optimization.
2012-04-13 12:27:27 -04:00
Keegan McAllister 349e2d20c8 Use the hardening flags
Closes #79.
2012-04-13 12:25:09 -04:00
Alexander Chernyakhovsky 87d57c9567 Add unistd.h to network.cc to allow mosh to build on Fedora Rawhide (future Fedora 18) 2012-03-26 18:46:52 -04:00
Keegan McAllister 4eb3cace0b Use the PRNG class for chaff
In particular, srand( time( NULL ) ) is very predictable.

[keithw@mit.edu -- modified to use byte PRNG from /dev/urandom]
2012-03-19 23:12:07 -04:00
Keith Winstein 483bfe9f0f Make make_chaff() static class function to fix spurious clang warning 2012-03-18 14:11:49 -04:00
Keith Winstein ee2aea1a6e Add chaff to outgoing instructions (closes #26 github issue) 2012-03-18 13:56:27 -04:00
Keith Winstein 3d4ce8b52d Revert "Increase shutdown retries before giving up"
This reverts commit df54a869e9.

This takes too long and the UI is not pretty (since lasts more than 1 s).
2012-03-18 03:41:16 -04:00
Keith Winstein df54a869e9 Increase shutdown retries before giving up 2012-03-17 15:08:17 -04:00
Keith Winstein 66c6c0669a Print pre-CONNECT output only on failure 2012-03-10 03:55:25 -05:00
Keith Winstein df3eec1397 Allow explicit UDP port option, confine ports to range 60000..61000 2012-03-10 03:34:47 -05:00
Keith Winstein df5d163f9c Fix asserts with side-effects (per Keegan McAllister) 2012-03-08 10:50:19 -05:00
Anders Kaseorg edada5e1ea Don’t use $(builddir)
$(builddir) is always ., except apparently on automake 1.9 which
doesn’t define it.

Signed-off-by: Anders Kaseorg <andersk@mit.edu>
2012-03-07 03:10:19 -05:00
Quentin Smith a1671bcf3b Handle the absence of IP_MTU_DISCOVER 2012-03-07 03:05:36 -05:00
Quentin Smith e8d14d35a6 Add boost and protobuf in the places where they are needed
[seph@directionless.org, andersk@mit.edu: add in even more places]
2012-03-07 03:05:36 -05:00
Quentin Smith 582bf347c9 Add alternate timestamp implementations
Add mach_absolute_time and gettimeofday timestamp implementations, and
fix clock_gettime check so that it can actually succeed
2012-03-07 03:05:36 -05:00
Quentin Smith 17d6962af8 Check for proper byteorder functions
[andersk@mit.edu: Add byteorder.h to libmoshcrypto_a_SOURCES]
2012-03-07 03:05:36 -05:00
Anders Kaseorg aad760e7d6 Make warning CXXFLAGS configurable
This turns off -Werror by default except in the Debian package.
-Werror is inherently unportable and breaks things on OS X.  While it
can cause problems in Debian too, this is at least a little better.

It also turns off -pedantic in src/protobufs, because apparently
protoc output doesn’t compile with -pedantic on all platforms.

Signed-off-by: Anders Kaseorg <andersk@mit.edu>
2012-03-07 03:05:35 -05:00
Keegan McAllister 12fcf6800a Change timeout from -1 to INT_MAX in TransportSender
This allows min() to work properly on timeouts.
2012-03-06 11:57:45 -08:00
Keegan McAllister e35733a2c1 Rename 'attached' to 'has_remote_addr'
Even with future support for detaching and reattaching, this variable will keep
its original meaning.
2012-03-06 11:54:56 -08:00
Keith Winstein 9e13176d96 Fix build problem on i386 2012-02-26 13:51:11 -05:00
Keith Winstein 7a9f92d7f1 Compress all instructions (closes #19 github issue) 2012-02-26 04:41:03 -05:00
Keith Winstein f0886a1dda Add const to fragmenter 2012-02-26 03:59:00 -05:00
Keith Winstein e5c8c33f4f Fix timing of echo acks 2012-02-26 02:49:53 -05:00
Keith Winstein f0199e2695 Bump version numbers (including Mosh protocol version)
This server is now incompatible with older clients and vice versa.
2012-02-25 15:16:21 -05:00
Keith Winstein 3a92cd1393 Explicit echo ack protobuf with reliable semantics 2012-02-25 14:34:39 -05:00
Keith Winstein a2b293c027 Make retry more aggressive even absent new data (fixes #23 github issue) 2012-02-25 12:12:16 -05:00
Keith Winstein 58b584a2b3 Move from protobuf-lite to protobuf to accommodate Ubuntu lucid
Add changelog entry
2012-02-20 00:40:08 -05:00
Anders Kaseorg 689eedc271 Compile without --std=c++0x
Signed-off-by: Anders Kaseorg <andersk@mit.edu>
2012-02-17 21:29:51 -05:00