<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>31603</bug_id>
          
          <creation_ts>2009-11-17 16:26:39 -0800</creation_ts>
          <short_desc>WebSocket server is confused if WebKit tests run from within /tmp on Mac OS X</short_desc>
          <delta_ts>2009-11-17 17:25:36 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>31501</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Rowe (bdash)">mrowe</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>yuzo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>164382</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-11-17 16:26:39 -0800</bug_when>
    <thetext>On Mac OS X /tmp is a symlink to /private/tmp.  If the WebSocket server is started from below this directory it gets confused and logs errors rather than serving content:

mrowe@angara:/tmp/WebKit$ PYTHONPATH=WebKitTools/pywebsocket /usr/bin/python WebKitTools/pywebsocket/mod_pywebsocket/standalone.py -p 2048 -d $PWD/LayoutTests -s $PWD/LayoutTests/websocket/tests
----------------------------------------
Exception happened during processing of request from (&apos;127.0.0.1&apos;, 50785)
Traceback (most recent call last):
  File &quot;/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/SocketServer.py&quot;, line 558, in process_request_thread
    self.finish_request(request, client_address)
  File &quot;/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/SocketServer.py&quot;, line 320, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File &quot;WebKitTools/pywebsocket/mod_pywebsocket/standalone.py&quot;, line 170, in __init__
    WebSocketRequestHandler.options.scan_dir)
  File &quot;/private/tmp/WebKit/WebKitTools/pywebsocket/mod_pywebsocket/dispatch.py&quot;, line 141, in __init__
    &apos;root_dir:%s.&apos; % (scan_dir, root_dir))
DispatchError: scan_dir:/tmp/WebKit/LayoutTests/websocket/tests must be a directory under root_dir:..
----------------------------------------

This happens because dispatch.py uses the following code to determine if scan_dir is below root_dir: os.path.abspath(scan_dir).startswith(os.path.abspath(root_dir))

scan_dir is “/tmp/WebKit/LayoutTests/websocket/tests” and so abspath(scan_dir) evalutes to &quot;/tmp/WebKit/LayoutTests/websocket/tests”.
root_dir is “.” and so abspath(root_dir) evaluates to “/private/tmp/WebKit/LayoutTests”.

I suspect this code wants to be using os.path.realpath rather than os.path.abspath.  This returns the canonical version of the path and therefore is not confused by the /tmp symlink.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164386</commentid>
    <comment_count>1</comment_count>
      <attachid>43388</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-11-17 16:33:12 -0800</bug_when>
    <thetext>Created attachment 43388
Patch

I suspect that pywebsocket is from an external source but the README doesn’t include any information about that.  This patch appears to address the problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164397</commentid>
    <comment_count>2</comment_count>
      <attachid>43388</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-11-17 16:55:42 -0800</bug_when>
    <thetext>Comment on attachment 43388
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164403</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-11-17 17:13:04 -0800</bug_when>
    <thetext>Landed in r51099.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>164405</commentid>
    <comment_count>4</comment_count>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2009-11-17 17:25:36 -0800</bug_when>
    <thetext>Sorry for the bug and thank you for fixing.

I&apos;ll fix this also upstream.
( http://code.google.com/p/pywebsocket/issues/detail?id=23 )

FYI:
os.path.abspath is used also in line 65.

Yuzo</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43388</attachid>
            <date>2009-11-17 16:33:12 -0800</date>
            <delta_ts>2009-11-17 16:55:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-http-webkit.org-b-31603-WebSocket-server-is-confused.patch</filename>
            <type>text/plain</type>
            <size>2201</size>
            <attacher name="Mark Rowe (bdash)">mrowe</attacher>
            
              <data encoding="base64">RnJvbSA5YjkxYzk2ODQyY2IwY2E1MTNkNGEyOTZlMWQ0NjE4N2I1Njc1ZTVjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJrIFJvd2UgPG1yb3dlQGFwcGxlLmNvbT4KRGF0ZTogVHVl
LCAxNyBOb3YgMjAwOSAxNjozMjowNSAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIDxodHRwOi8vd2Vi
a2l0Lm9yZy9iLzMxNjAzPiBXZWJTb2NrZXQgc2VydmVyIGlzIGNvbmZ1c2VkIGlmIFdlYktpdCB0
ZXN0cyBydW4gZnJvbSB3aXRoaW4gL3RtcCBvbiBNYWMgT1MgWAoKUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCgoqIHB5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9kaXNwYXRjaC5weTogVXNl
IG9zLnBhdGgucmVhbHBhdGggYXMgaXQgcmV0dXJucyB0aGUgY2Fub25pY2FsIHBhdGggb2YgYSBm
aWxlLgpUaGlzIHByZXZlbnRzIHN5bWxpbmtzIGZyb20gY29uZnVzaW5nIHRoZSBkZXNjZW5kYW50
IGNoZWNrLgotLS0KIFdlYktpdFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAgOSArKysrKysrKysKIC4uLi9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQv
ZGlzcGF0Y2gucHkgICAgICAgIHwgICAgMiArLQogMiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRp
b25zKCspLCAxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCA1ZGY5NTdiLi5lNDE0ZWYwIDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDUgKzEsMTQgQEAKIDIwMDktMTEtMTcgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4K
IAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8aHR0cDov
L3dlYmtpdC5vcmcvYi8zMTYwMz4gV2ViU29ja2V0IHNlcnZlciBpcyBjb25mdXNlZCBpZiBXZWJL
aXQgdGVzdHMgcnVuIGZyb20gd2l0aGluIC90bXAgb24gTWFjIE9TIFgKKworICAgICAgICAqIHB5
d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9kaXNwYXRjaC5weTogVXNlIG9zLnBhdGgucmVhbHBh
dGggYXMgaXQgcmV0dXJucyB0aGUgY2Fub25pY2FsIHBhdGggb2YgYSBmaWxlLgorICAgICAgICBU
aGlzIHByZXZlbnRzIHN5bWxpbmtzIGZyb20gY29uZnVzaW5nIHRoZSBkZXNjZW5kYW50IGNoZWNr
LgorCisyMDA5LTExLTE3ICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CisKICAgICAgICAg
UmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KIAogICAgICAgICA8aHR0cDovL3dlYmtp
dC5vcmcvYi8zMTYwMj4gRmFpbGluZyB0byBzdGFydCB0aGUgV2ViU29ja2V0IHNlcnZlciBzaG91
bGRu4oCZdCB0ZXJtaW5hdGUgZW50aXJlIHRlc3QgcnVuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvZGlzcGF0Y2gucHkgYi9XZWJLaXRUb29scy9w
eXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvZGlzcGF0Y2gucHkKaW5kZXggODQ0MjJlYi4uNmQ1
MDBjYiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0
L2Rpc3BhdGNoLnB5CisrKyBiL1dlYktpdFRvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tl
dC9kaXNwYXRjaC5weQpAQCAtMTM2LDcgKzEzNiw3IEBAIGNsYXNzIERpc3BhdGNoZXIob2JqZWN0
KToKICAgICAgICAgc2VsZi5fc291cmNlX3dhcm5pbmdzID0gW10KICAgICAgICAgaWYgc2Nhbl9k
aXIgaXMgTm9uZToKICAgICAgICAgICAgIHNjYW5fZGlyID0gcm9vdF9kaXIKLSAgICAgICAgaWYg
bm90IG9zLnBhdGguYWJzcGF0aChzY2FuX2Rpcikuc3RhcnRzd2l0aChvcy5wYXRoLmFic3BhdGgo
cm9vdF9kaXIpKToKKyAgICAgICAgaWYgbm90IG9zLnBhdGgucmVhbHBhdGgoc2Nhbl9kaXIpLnN0
YXJ0c3dpdGgob3MucGF0aC5yZWFscGF0aChyb290X2RpcikpOgogICAgICAgICAgICAgcmFpc2Ug
RGlzcGF0Y2hFcnJvcignc2Nhbl9kaXI6JXMgbXVzdCBiZSBhIGRpcmVjdG9yeSB1bmRlciAnCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyb290X2Rpcjolcy4nICUgKHNjYW5fZGly
LCByb290X2RpcikpCiAgICAgICAgIHNlbGYuX3NvdXJjZV9maWxlc19pbl9kaXIocm9vdF9kaXIs
IHNjYW5fZGlyKQotLSAKMS42LjUuMy4xNDguZzc4NWM1Cgo=
</data>
<flag name="review"
          id="25089"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>