[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/KDE/3.5/kdenetwork/krfb/krfb_httpd
From:       Bram Schoenmakers <bramschoenmakers () kde ! nl>
Date:       2007-02-22 15:31:52
Message-ID: 1172158312.376447.7159.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 636245 by bram:

Replace Mac newlines with Unix newlines, and the problem of 100% CPU utilization with \
the first connection disappeared. Credits go to Reinhold and Modestas.

BUG:135013



 M  +75 -1     krfb_httpd  


--- branches/KDE/3.5/kdenetwork/krfb/krfb_httpd/krfb_httpd #636244:636245
@@ -1 +1,75 @@
-#! /usr/bin/env bashif [ "$1" = "--kinetd" ]; then	# redirect stdin and stdout to \
the inetd socket.	exec <&$2 >&$2firead request url httptype || exit \
0url="${url//}"httptype="${httptype//}"if [ "x$httptype" != "x" ]; \
then	line="x"	while [ -n "$line" ]; do		read line || exit 0		line="${line//}"	donefi# \
echo "url = $url, request = $request" >> /tmp/httpd.logcase "$url" in/)	# We need the \
size of the display for the current applet.	size=`xdpyinfo -display :0| grep \
dimensions:|head -n 1|sed -e "s/.*dimensions: *//" -e "s/ pixels.*//"`	width=`echo \
$size|sed -e "s/x.*//"`	height=`echo $size|sed -e "s/.*x//"`	# The VNC menubar is 20 \
pixels high ...	height=$((height+20))	port=`dcop kded kinetd port krfb`	if [ "$port" \
== "-1" ]; then		port=5900	fi	ctype="text/html"	content="<HTML><HEAD><TITLE>$LOGNAME's \
desktop</TITLE></HEAD><BODY><APPLET CODE=VncViewer.class ARCHIVE=VncViewer.jar \
WIDTH=$width HEIGHT=$height>	<param name=PORT value=$port></AP  \
PLET></BODY></HTML>"	;;*.jar|*.class)	# Use basename to make sure we have just a \
filename, not ../../...	url="`basename \
"$url"`"	ctype="application/octet-stream"	cfile="/usr/share/vnc/classes/$url"	content="FILE"	;;esacif \
[ "x$httptype" != "x" ]; then	echo "HTTP/1.0 200 OK"	echo "Content-Type: $ctype"	if [ \
"$content" == "FILE" ]; then		clen=`wc -c "$cfile"`	else		clen=`echo "$content"|wc \
-c`	fi	echo "Content-Length: $clen"	echo "Connection: close"	echofiif [ "$request" == \
"GET" ]; then	if [ "$content" == "FILE" ]; then		cat "$cfile"	else		echo \
"$content"	fifiexit 0 \ No newline at end of file
+#! /usr/bin/env bash
+
+if [ "$1" = "--kinetd" ]; then
+	# redirect stdin and stdout to the inetd socket.
+	exec <&$2 >&$2
+fi
+
+read request url httptype || exit 0
+url="${url/
+/}"
+httptype="${httptype/
+/}"
+
+if [ "x$httptype" != "x" ]; then
+	line="x"
+	while [ -n "$line" ]; do
+		read line || exit 0
+		line="${line/
+/}"
+	done
+fi
+# echo "url = $url, request = $request" >> /tmp/httpd.log
+case "$url" in
+/)
+	# We need the size of the display for the current applet.
+	size=`xdpyinfo -display :0| grep dimensions:|head -n 1|sed -e "s/.*dimensions: *//" \
-e "s/ pixels.*//"` +	width=`echo $size|sed -e "s/x.*//"`
+	height=`echo $size|sed -e "s/.*x//"`
+	# The VNC menubar is 20 pixels high ...
+	height=$((height+20))
+
+	port=`dcop kded kinetd port krfb`
+	if [ "$port" == "-1" ]; then
+		port=5900
+	fi
+
+	ctype="text/html"
+	content="
+<HTML><HEAD><TITLE>$LOGNAME's desktop</TITLE></HEAD>
+<BODY>
+<APPLET CODE=VncViewer.class ARCHIVE=VncViewer.jar WIDTH=$width HEIGHT=$height>
+	<param name=PORT value=$port>
+</APPLET>
+</BODY></HTML>"
+	;;
+*.jar|*.class)
+	# Use basename to make sure we have just a filename, not ../../...
+	url="`basename "$url"`"
+	ctype="application/octet-stream"
+	cfile="/usr/share/vnc/classes/$url"
+	content="FILE"
+	;;
+esac
+
+if [ "x$httptype" != "x" ]; then
+	echo "HTTP/1.0 200 OK"
+	echo "Content-Type: $ctype"
+	if [ "$content" == "FILE" ]; then
+		clen=`wc -c "$cfile"`
+	else
+		clen=`echo "$content"|wc -c`
+	fi
+	echo "Content-Length: $clen"
+	echo "Connection: close"
+	echo
+fi
+
+if [ "$request" == "GET" ]; then
+	if [ "$content" == "FILE" ]; then
+		cat "$cfile"
+	else
+		echo "$content"
+	fi
+fi
+exit 0


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic