summaryrefslogtreecommitdiffstats
path: root/stap-serverd
diff options
context:
space:
mode:
authorFrank Ch. Eigler <fche@elastic.org>2008-08-06 21:02:20 -0400
committerFrank Ch. Eigler <fche@elastic.org>2008-08-06 21:02:20 -0400
commitb20db09e9ea98f63604aa14048a7fb663fb3f804 (patch)
treefb7c046a31dc30e4bf62b852063d7041e1e1663b /stap-serverd
parent445cb916dbd5faaa56e106ac23853a710768f0d7 (diff)
downloadsystemtap-steved-b20db09e9ea98f63604aa14048a7fb663fb3f804.tar.gz
systemtap-steved-b20db09e9ea98f63604aa14048a7fb663fb3f804.tar.xz
systemtap-steved-b20db09e9ea98f63604aa14048a7fb663fb3f804.zip
client-server: improve random port selection and mdns txt use
Diffstat (limited to 'stap-serverd')
-rwxr-xr-xstap-serverd10
1 files changed, 9 insertions, 1 deletions
diff --git a/stap-serverd b/stap-serverd
index af4b2717..6170eb8f 100755
--- a/stap-serverd
+++ b/stap-serverd
@@ -26,6 +26,11 @@ function initialization {
avahi_type=_stap._tcp
port=$1
test "X$port" = "X" && port=65000
+ port2=$(($port + 1))
+ if netstat -atn | awk '{print $4}' | cut -f2 -d: | egrep -q "^($port|$port2)\$"; then
+ # Whoops, the port is busy; try another one.
+ initialization $((1024+($port + $RANDOM)%64000))
+ fi
}
# function: advertise_presence
@@ -35,7 +40,7 @@ function advertise_presence {
# Build up a string representing our server's properties.
# TODO: this needs fleshing out.
local sysinfo=`uname -rvm`
- local txt="$sysinfo"
+ local txt="sysinfo=$sysinfo"
# Call avahi-publish-service to advertise our presence.
avahi-publish-service "Systemtap Compile Server on `uname -n`" \
@@ -65,6 +70,9 @@ function listen {
# received (i.e. SIGTERM) will be processed.
nc -l $port < $fifo_name | stap-server $((port + 1)) > $fifo_name 2>&1 &
wait %nc
+ if [ $? -ne 0 ]; then
+ fatal "ERROR: cannot listen on port $port"
+ fi
done
}