summaryrefslogtreecommitdiffstats
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
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
-rw-r--r--ChangeLog8
-rwxr-xr-xstap-find-servers4
-rwxr-xr-xstap-serverd10
3 files changed, 19 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 88497aef..88de8c62 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2008-08-06 Frank Ch. Eigler <fche@elastic.org>
+
+ * stap-find-servers (match_server, client_sysinfo):
+ Use "sysinfo=...." keyword in mdns TXT record.
+ * stap-serverd (advertise_presence): Ditto.
+ (initialization): Locate random usable server port if needed.
+ (listen): Complain if port turns out to be unusable after all.
+
2008-08-06 Josh Stone <joshua.i.stone@intel.com>
PR 6820
diff --git a/stap-find-servers b/stap-find-servers
index 9e7b633d..fea645bd 100755
--- a/stap-find-servers
+++ b/stap-find-servers
@@ -87,7 +87,7 @@ function match_server {
server_port=`expr "$service_data" : '\[\([^]]*\)\]'`
;;
txt )
- server_sysinfo=`expr "$service_data" : '\[\"\([^]]*\)\"\]'`
+ server_sysinfo=`expr "$service_data" : '\[.*\"\(sysinfo=[^]]*\)\"\]'`
;;
* )
break ;;
@@ -115,7 +115,7 @@ function client_sysinfo {
# Add some info from uname
sysinfo_client="`uname -rvm`"
fi
- echo $sysinfo_client
+ echo sysinfo=$sysinfo_client
}
#-----------------------------------------------------------------------------
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
}