Commit Graph

157 Commits

Author SHA1 Message Date
Jeremy Lakeman
66e0711d6b Only send one audio block per packet, but request that it be sent multiple times
If we receive a large buffer of audio, we want to stuff the packet with multiple frames and send them together.
And we want to send redundant copies of the audio to help recover from packet loss.
But if all our redundant copies end up in the same packet, we're screwed anyway.

This is a temporary hack until the network layer implements NACK / retry for resilient multi-hop delivery
2012-09-28 15:23:49 +09:30
Jeremy Lakeman
ac3864ff20 Reuse command line parsing framework with monitor interface 2012-09-25 13:31:34 +09:30
Jeremy Lakeman
222cb80ce7 Modify lookup uri format to distinguish between serval identities and gateway services 2012-09-21 15:17:56 +09:30
Andrew Bettison
1f4688db99 #16 Fix 'rhizomeops' tests that fail on Solaris 2012-09-13 14:08:52 +09:30
Daniel O'Connor
5f0b70cf51 Hide the LOCAL_PEERCRED/SO_PEERCRED behind #ifdef linux.
Note that BSD defines LOCAL_PEERCRED but its interface appears to be different to the Linux one.
2012-09-06 14:31:25 +09:30
Paul Gardner-Stephen
bba6839656 Initial stab at porting to Solaris.
It compiles without warning (with CC=gcc) but doesn't link
because NaCL doesn't build yet.
2012-09-05 20:42:50 +09:30
Jeremy Lakeman
df0e20408c Close sockets on poll errors 2012-08-31 15:04:06 +09:30
Jeremy Lakeman
aa5706f9d7 Refactor routing node information to use new subscriber tree 2012-08-31 15:03:07 +09:30
Jeremy Lakeman
dcb2da45fa Allow for audio to arrive in variable sized blocks 2012-08-13 16:35:30 +09:30
Jeremy Lakeman
3ab79d8e5b Pass phone numbers in vomp call initiation 2012-08-13 14:01:57 +09:30
Jeremy Lakeman
2bd26dfcdb Send monitor dna response with my sid in uri 2012-08-12 16:03:18 +09:30
Jeremy Lakeman
6981e7e2c2 Allow monitor clients to resolve did's 2012-08-10 15:29:19 +09:30
Jeremy Lakeman
f059546eb0 Improve monitor client interface and vomp for asterisk channel driver 2012-08-09 13:32:08 +09:30
Jeremy Lakeman
736a8f43c0 Refactor towards changing the vomp monitor interface 2012-08-09 13:32:08 +09:30
Jeremy Lakeman
fc9a9b337e Wait for vomp client to indicate that ringing has started 2012-08-09 13:30:52 +09:30
Daniel O'Connor
fd1f91db8d Refactor unix domain socket naming to a separate file instead.
Handle selection between normal & abstract sockets in a single place.

overlay_mdp.c tried to have both but this seems like a bug so I've removed the second socket (needs tests).
2012-07-30 11:19:25 +09:30
Jeremy Lakeman
fdc70d7512 Log when a peer becomes reachable or unreachable, edit tests to wait for this message 2012-07-17 18:22:39 +09:30
Andrew Bettison
86eb482ed9 Replace macros with functions
SET_NONBLOCKING(), SET_BLOCKING(), WRITE_STR() are now set_nonblock(),
set_block() and write_str() respectively, all of which log an error before
returning -1.  There are other useful methods: write_all() treats anything less
than all bytes written as an error; write_nonblock() treats EAGAIN and EINTR as
zero bytes written, and a combination: write_all_nonblock().
2012-07-10 16:33:39 +09:30
Andrew Bettison
735d9a42cc Clean up compile warnings and fix bugs
In monitor_process_command() for "call" command, was not handling SID "*" case
properly, nor checking validity of hex SID.
2012-07-06 10:14:39 +09:30
Jeremy Lakeman
7b8e82baea Refactor vomp call processing to reduce latency 2012-07-05 16:09:33 +09:30
Andrew Bettison
2c87039307 Replace overlay_render_sid() with alloca_tohex_sid()
To eliminate timebomb bugs caused by rotor wraparound
2012-07-03 17:59:30 +09:30
Andrew Bettison
30d51f0314 Tighten up tests and code relating to peer discovery 2012-07-03 17:38:54 +09:30
Jeremy Lakeman
3d39e92628 Setup scheduled alarm per vomp call and send keep alives 2012-07-03 15:50:05 +09:30
Andrew Bettison
8020ea3b74 Merge branch 'eventscheduler' into master
Conflicts:
	commandline.c
	monitor.c
	overlay.c
	overlay_interface.c
	overlay_packetformats.c
	rhizome_fetch.c
	rhizome_http.c
	rhizome_packetformats.c
	serval.h
	server.c
	testdefs.sh
	testframework.sh
	tests/dnaprotocol
	tests/server
2012-07-03 10:26:22 +09:30
Jeremy Lakeman
132d3a6f9b rename profiling structure 2012-07-02 16:04:00 +09:30
Jeremy Lakeman
e705696896 separate statistics gathering from the scheduler structure 2012-07-02 15:20:30 +09:30
Jeremy Lakeman
89566e4d3d Refactor how functions are scheduled or file handes are watched 2012-07-02 13:19:54 +09:30
Andrew Bettison
a5ba1ecacd Clean up debugging code
Only use DEBUG inside "if (debug & DEBUG_BLAH)", not INFO or WARN or WHY!
INFO messages for starting/stopping servald server.
2012-06-28 15:37:36 +09:30
Jeremy Lakeman
29cba17891 Fix rhizome transfers 2012-06-27 16:54:42 +09:30
Jeremy Lakeman
06f724707d Use message length instead of string length for audio packets 2012-06-26 14:34:39 +09:30
Jeremy Lakeman
64559bdca9 Watch new monitor client connections 2012-06-26 12:20:49 +09:30
gardners
b40a468276 Merge branch 'eventscheduler'
Conflicts:
	monitor.c
	serval.h
2012-06-25 16:50:23 +09:30
Daniel O'Connor
271454aee3 Use WRITE_STR instead of writeLine.
staticise a bunch of variables & functions in monitor-cli.c
2012-06-25 16:24:33 +09:30
Daniel O'Connor
930280a17d Move signal handler setup to main so it's only done once. 2012-06-25 16:24:33 +09:30
Andrew Bettison
a960ed4e8a Clean up compiler warning in monitor.c 2012-06-25 15:00:07 +09:30
Daniel O'Connor
80b972c455 The number of clients we have is not a warning. 2012-06-25 14:01:50 +09:30
Daniel O'Connor
2fe520f7a2 Fix peer credential checking on BSD, replace write(s, m, strlen(m)) with a macro, factor out new monitor socke code.
Note this code has issues with signed/unsigned chars. They should become uint8_t's if they hold binary data, otherwise just char. If they ARE binary then it is broken because it calls strlen() on them.
2012-06-22 20:40:30 +09:30
Daniel O'Connor
41a7588a7f Fix creation of socket name for !linux. Depressingly bind() doesn't fail when you pass it the name of a directory. 2012-06-22 20:40:29 +09:30
gardners
6472ff29c1 fixed monitor interface problem with new event scheduler. 2012-06-22 16:06:46 +09:30
gardners
5dc6d122a5 significant progress towards clean callback scheduler for poll()
events and timed callbacks.
2012-06-22 16:05:49 +09:30
Daniel O'Connor
5103176d39 Remove server_probe() and use daemon() instead of a hand rolled version.
- server_probe() assumes abstract name space sockets.
- The hand rolled daemon doesn't work properly on BSD.
2012-06-22 16:05:43 +09:30
gardners
01712ab67e monitor.socket config option added to allow multiple servald
instances on the same machine without conflicting abstract namespace
unix domain sockets for monitor interface.
2012-06-21 16:36:37 +09:30
Jeremy Lakeman
f6cce7103d Fix error message 2012-06-18 10:59:33 +09:30
Daniel O'Connor
051191ba32 Fix braino in non-Linux code. 2012-05-29 09:48:22 +09:30
Daniel O'Connor
8882515d03 Fix compilation on OSX.
- /proc/net/route is Linux only.
- lsif() will work anywhere SIOCGIFCONF is defined.
- Abstract namespace UNIX domain sockets are Linux only.
- Rework code to reduce indent levels.
2012-05-28 15:00:54 +09:30
Andrew Bettison
8ec2fe53d4 Silence 'status unused' compiler warning 2012-05-25 15:59:57 +09:30
Andrew Bettison
1af9125392 All rhizome database keys are uppercase hex
FILES.id, MANIFESTS.id, FILEMANIFESTS.fileid, FILEMANIFESTS.manifestid
Named constants for hex and binary ID sizes
2012-05-23 16:04:00 +09:30
gardners
6a83f2434f cleaned up some debug output, among other things. 2012-05-22 17:04:24 +09:30
gardners
e44294ea66 implemented server_probe(int *pid) that used monitor interface
to probe server status.  Also returns PID if running (Linux only).
2012-05-21 20:45:07 +09:30
Jeremy Lakeman
05a430bc3a Fix case of new peer message for consistency 2012-05-21 14:14:24 +09:30
gardners
66bc67fc76 changed space to : in newpeer message for consistency. 2012-05-21 13:06:42 +09:30
gardners
91e0b3ac27 add monitor commands to actually express interest in new peers. 2012-05-21 13:04:54 +09:30
gardners
c18eb2152c fixed bug in MONITOR_PEERS 2012-05-21 12:55:25 +09:30
gardners
27daf02f81 added peer announcment to monitor interface. 2012-05-21 12:47:54 +09:30
gardners
3ea6d4f324 monitor interface announces new peers. 2012-05-21 12:47:53 +09:30
Daniel O'Connor
990a8f3057 Add support for srtuct ucred on BSD.
This requires building with _GNU_SOURCE to get access to struct ucred on Linux. Previously the test failed on every platform except glibc <2.8 or so.

Building with _GNU_SOURCE causes TRUE to be defined so we can't use this as a variable anymore, and MIN/MAX so don't define our own.
2012-05-21 12:22:50 +09:30
gardners
844a480ae7 more trying to reuse socket addresses when stuck. 2012-05-17 13:14:16 +09:30
gardners
d74afa9ac2 added some debugging to help solve the non-responsive issue that
Jeremy found.
2012-05-14 15:52:15 +09:30
gardners
0b5a9665b2 first cut code for sending monitor socket announcements when
rhizome bundles are received.
2012-05-12 07:24:52 +09:30
Andrew Bettison
e746557a08 Fix bug in overlay_gettime_ms()
The sequence start time was only getting set in overlay_interface_init(), which
was not always called, or was called after overlay_gettime_ms() had already
been used.

Added FATALF(), FATAL() and FATAL_perror() macros.

Removed a bunch of debug statements no longer needed in monitor.c and server.c.
2012-05-11 10:38:46 +09:30
gardners
7b82ccbd7b work on bypass-audio.
CALLSTATUS monitor message has gained a field, thus changing
API for java side.
2012-05-11 08:14:00 +09:30
Andrew Bettison
e39ab01903 Reduce monitor.c debug output a bit 2012-05-11 00:17:02 +09:30
Andrew Bettison
8c1b8920d5 Fix possible cause of SEGV crash in monitor.c 2012-05-10 18:08:59 +09:30
Andrew Bettison
881576212c Fix all trivial compiler warnings 2012-05-10 18:08:59 +09:30
Andrew Bettison
f1e23d463b Improve disgnostic messages from monitor.c 2012-05-09 19:06:17 +09:30
gardners
dbb9b4930f removed some more debugging. 2012-05-09 07:40:29 +09:30
gardners
fbd19db931 stripped out lots of debugging for audio frame handling ready for
audio-streaming of call.
2012-05-09 07:38:34 +09:30
gardners
8aae21232f fix to stop runaway last update time that was squelching keepalive
messages.
2012-05-08 15:58:37 +09:30
gardners
b198db38b9 fixed various bugs in monitor-cli. 2012-05-08 15:47:39 +09:30
gardners
4fa63e61bc improved monitor-cli.c to auto-dial a peer and pump audio in. 2012-05-08 14:41:21 +09:30
gardners
8d48b873d6 added line feed to start of all monitor messages to ensure fast
re-sync if data blob is not read correctly.
2012-05-08 12:57:44 +09:30
gardners
171eb75d48 fixed packet size calculation bug. 2012-05-07 16:50:49 +09:30
gardners
3e9fcffd58 reversed previous commit, as it makes the monitor interface too
chatty, and doesn't help detect loss of servald connection, anyway.
2012-05-07 09:10:35 +09:30
gardners
4ebbb7b3bf added dummy keep alive for null call to make it easier to track
death of calls.
2012-05-07 09:08:56 +09:30
gardners
ecc271c7a3 added call state keepalive so that UI can positively detect when
a call has been destroyed, but has not been realised.
2012-05-07 09:01:46 +09:30
gardners
7b520e7a49 fixed various bugs with priorty dispatch of voice traffic.
some debug tweaking etc.
2012-05-07 08:31:53 +09:30
gardners
602c00efd7 fixed bugs in handling of audio. 2012-05-06 22:23:58 +09:30
gardners
04599091d1 improved debugging of closed sockets 2012-05-05 19:28:31 +09:30
gardners
9ce7058cd0 ignore ENOTRECOVERABLE? 2012-05-05 19:10:28 +09:30
gardners
6f363db8f1 added useful message for when closing due to incorrect uid. 2012-05-05 19:06:30 +09:30
gardners
be806088b3 CALLSTATUS message now contains more information (SIDs and DIDs) 2012-05-05 03:58:42 +09:30
gardners
6bc8f5643f better handling of disconnections by monitor clients. 2012-05-04 03:58:34 +09:30
gardners
4f09ccebdc further work towards working monitor interface.
sending DTMF works now, and DTMF packets are received back.
2012-05-04 03:44:41 +09:30
gardners
175a079c0c monitor call/hangup/pickup commands now work. 2012-05-04 03:24:53 +09:30
gardners
91d875d70a fixed various bugs in servald monitor. now receives commands,
and can act on them.
2012-05-04 03:16:06 +09:30
gardners
26ef52cf99 and a bug fix for the above. 2012-05-03 17:04:47 +09:30
gardners
c981b8c28a further monitor client debuggin improvements 2012-05-03 17:04:20 +09:30
gardners
0d899b97d3 improved debugging of when we close our end of client connection. 2012-05-03 17:02:57 +09:30
gardners
f1ac067d4f removed excess debug. 2012-05-03 16:21:14 +09:30
gardners
11132c40c9 fixed big fat nasty socket handling bug. 2012-05-03 16:16:36 +09:30
gardners
f5c3ea024e added debug output to see whether we are getting data back from
java side.
2012-05-03 15:23:42 +09:30
Andrew Bettison
490d9ef472 Only define struct ucred if <sys/socket.h> does not provide it 2012-05-03 14:50:14 +09:30
gardners
75e925a8b5 added some debug for monitor interface. 2012-05-03 14:41:18 +09:30
gardners
ac9cbb4e51 removed debugging now that accept doesn't block 2012-05-03 13:42:41 +09:30
gardners
29a7c20160 fixed a blocking io problem. 2012-05-03 13:37:18 +09:30
gardners
61aa3994b6 try to force accept to be non-blocking. 2012-05-03 13:29:48 +09:30
gardners
9dedb6fd06 more debugging to find why servald blocks after accepting a
monitor client.
2012-05-03 13:19:11 +09:30
gardners
4bbe250595 make sure monitor sockets are nonblocking before doing anything
to them.
2012-05-03 13:04:17 +09:30
gardners
5d6f2b0517 added note about path name length calculation for unix domain
abstract socket.
2012-05-03 12:35:16 +09:30
gardners
f1c6b74235 fixed struct ucred handling for android 2012-05-03 12:20:52 +09:30