Patchwork [STABLE] py3: compare http server's command with a native string

login
register
mail settings
Submitter Denis Laxalde
Date Nov. 7, 2019, 8:28 a.m.
Message ID <aa65668163280666889f.1573115298@steppe.local>
Download mbox | patch
Permalink /patch/42892/
State New
Headers show

Comments

Denis Laxalde - Nov. 7, 2019, 8:28 a.m.
# HG changeset patch
# User Denis Laxalde <denis.laxalde@logilab.fr>
# Date 1573113506 -3600
#      Thu Nov 07 08:58:26 2019 +0100
# Branch stable
# Node ID aa65668163280666889f40b335a2a3f9144bb3b2
# Parent  be384a2052aa864733b3f75c357bb2bc7cd42ae4
py3: compare http server's command with a native string

The "command" attribute is an str, so comparing with a bytes would not
work on Python 3. This might solve issues in test-lfs-serve-access.t
that happens sometimes (especially in CI):

    --- /hgwork/src/tests/test-lfs-serve-access.t
    +++ /hgwork/src/tests/test-lfs-serve-access.t.err
    @@ -163,11 +163,13 @@

       $ cat $TESTTMP/access.log $TESTTMP/errors.log
       $LOCALIP - - [$LOGDATE$] "POST /missing/objects/batch HTTP/1.1" 404 - (glob)
    +  $LOCALIP - - [05/Nov/2019 16:32:34] "{"objects": [{"oid": "f03217a32529a28a42d03b1244fe09b6e0f9fd06d7b966d4d50567be2abe6c0e", "size": 20}], "operation": "download"}" HTTPStatus.BAD_REQUEST -
       $LOCALIP - - [$LOGDATE$] "GET /subdir/mount/point?cmd=capabilities HTTP/1.1" 200 - (glob)
       $LOCALIP - - [$LOGDATE$] "GET /subdir/mount/point?cmd=batch HTTP/1.1" 200 - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
       $LOCALIP - - [$LOGDATE$] "GET /subdir/mount/point?cmd=getbundle HTTP/1.1" 200 - x-hgarg-1:bookmarks=1&bundlecaps=HG20%2Cbundle2%3DHG20%250Abookmarks%250Achangegroup%253D01%252C02%252C03%250Adigests%253Dmd5%252Csha1%252Csha512%250Aerror%253Dabort%252Cunsupportedcontent%252Cpushraced%252Cpushkey%250Ahgtagsfnodes%250Alistkeys%250Aphases%253Dheads%250Apushkey%250Aremote-changegroup%253Dhttp%252Chttps%250Arev-branch-cache%250Astream%253Dv2&cg=1&common=0000000000000000000000000000000000000000&heads=525251863cad618e55d483555f3d00a2ca99597e&listkeys=bookmarks&phases=1 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
       $LOCALIP - - [$LOGDATE$] "POST /subdir/mount/point/.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob)
       $LOCALIP - - [$LOGDATE$] "GET /subdir/mount/point/.hg/lfs/objects/f03217a32529a28a42d03b1244fe09b6e0f9fd06d7b966d4d50567be2abe6c0e HTTP/1.1" 200 - (glob)
    +  $LOCALIP - - [05/Nov/2019 16:32:34] code 400, message Bad request version ('"download"}')

     Blobs that already exist in the usercache are linked into the repo store, even
     though the client doesn't send the blob.
    @@ -195,6 +197,7 @@
       server2/.hg/store/lfs/objects/f0/3217a32529a28a42d03b1244fe09b6e0f9fd06d7b966d4d50567be2abe6c0e
       $ "$PYTHON" $RUNTESTDIR/killdaemons.py $DAEMON_PIDS
       $ cat $TESTTMP/errors.log
    +  $LOCALIP - - [05/Nov/2019 16:32:34] code 400, message Bad request version ('"download"}')

       $ cat >> $TESTTMP/lfsstoreerror.py <<EOF
       > import errno

(from https://ci.hg.gregoryszorc.com/job-info/hg-committed-ca3dca416f8d5863ca6f5a4a6a6bb835dcd5feeb-debian10-cpython-3.7-0)

Patch

diff --git a/mercurial/hgweb/server.py b/mercurial/hgweb/server.py
--- a/mercurial/hgweb/server.py
+++ b/mercurial/hgweb/server.py
@@ -160,7 +160,7 @@  class _httprequesthandler(httpservermod.
             self.server.prefix + b'/'
         ):
             self._start_response(pycompat.strurl(common.statusmessage(404)), [])
-            if self.command == b'POST':
+            if self.command == r'POST':
                 # Paranoia: tell the client we're going to close the
                 # socket so they don't try and reuse a socket that
                 # might have a POST body waiting to confuse us. We do