diff options
author | Frank Ch. Eigler <fche@elastic.org> | 2008-08-06 21:02:20 -0400 |
---|---|---|
committer | Frank Ch. Eigler <fche@elastic.org> | 2008-08-06 21:02:20 -0400 |
commit | b20db09e9ea98f63604aa14048a7fb663fb3f804 (patch) | |
tree | fb7c046a31dc30e4bf62b852063d7041e1e1663b /stap-serverd | |
parent | 445cb916dbd5faaa56e106ac23853a710768f0d7 (diff) | |
download | systemtap-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-x | stap-serverd | 10 |
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 } |