get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/813725/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 813725,
    "url": "http://patchwork.ozlabs.org/api/patches/813725/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/1505375436-28439-7-git-send-email-peterx@redhat.com/",
    "project": {
        "id": 14,
        "url": "http://patchwork.ozlabs.org/api/projects/14/?format=api",
        "name": "QEMU Development",
        "link_name": "qemu-devel",
        "list_id": "qemu-devel.nongnu.org",
        "list_email": "qemu-devel@nongnu.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<1505375436-28439-7-git-send-email-peterx@redhat.com>",
    "list_archive_url": null,
    "date": "2017-09-14T07:50:27",
    "name": "[RFC,06/15] monitor: move the cur_mon hack deeper for QMP",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "e155ed4d4ef0541e408d82b9b5fc4ac4981b02f1",
    "submitter": {
        "id": 67717,
        "url": "http://patchwork.ozlabs.org/api/people/67717/?format=api",
        "name": "Peter Xu",
        "email": "peterx@redhat.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/1505375436-28439-7-git-send-email-peterx@redhat.com/mbox/",
    "series": [
        {
            "id": 3043,
            "url": "http://patchwork.ozlabs.org/api/series/3043/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=3043",
            "date": "2017-09-14T07:50:21",
            "name": "QMP: out-of-band (OOB) execution support",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/3043/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/813725/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/813725/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": "patchwork-incoming@bilbo.ozlabs.org",
        "Authentication-Results": [
            "ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)",
            "ext-mx05.extmail.prod.ext.phx2.redhat.com;\n\tdmarc=none (p=none dis=none) header.from=redhat.com",
            "ext-mx05.extmail.prod.ext.phx2.redhat.com;\n\tspf=fail smtp.mailfrom=peterx@redhat.com"
        ],
        "Received": [
            "from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xt9lc4C8Wz9sRm\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu, 14 Sep 2017 17:54:04 +1000 (AEST)",
            "from localhost ([::1]:46192 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dsOyI-0000Cw-M2\n\tfor incoming@patchwork.ozlabs.org; Thu, 14 Sep 2017 03:54:02 -0400",
            "from eggs.gnu.org ([2001:4830:134:3::10]:52026)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <peterx@redhat.com>) id 1dsOvu-0006YQ-42\n\tfor qemu-devel@nongnu.org; Thu, 14 Sep 2017 03:51:35 -0400",
            "from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <peterx@redhat.com>) id 1dsOvq-00071H-Vf\n\tfor qemu-devel@nongnu.org; Thu, 14 Sep 2017 03:51:34 -0400",
            "from mx1.redhat.com ([209.132.183.28]:60916)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <peterx@redhat.com>) id 1dsOvq-00070a-MK\n\tfor qemu-devel@nongnu.org; Thu, 14 Sep 2017 03:51:30 -0400",
            "from smtp.corp.redhat.com\n\t(int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby mx1.redhat.com (Postfix) with ESMTPS id A29F213A43;\n\tThu, 14 Sep 2017 07:51:29 +0000 (UTC)",
            "from pxdev.xzpeter.org.com (dhcp-15-224.nay.redhat.com\n\t[10.66.15.224])\n\tby smtp.corp.redhat.com (Postfix) with ESMTP id 7B1C6619B8;\n\tThu, 14 Sep 2017 07:51:20 +0000 (UTC)"
        ],
        "DMARC-Filter": "OpenDMARC Filter v1.3.2 mx1.redhat.com A29F213A43",
        "From": "Peter Xu <peterx@redhat.com>",
        "To": "qemu-devel@nongnu.org",
        "Date": "Thu, 14 Sep 2017 15:50:27 +0800",
        "Message-Id": "<1505375436-28439-7-git-send-email-peterx@redhat.com>",
        "In-Reply-To": "<1505375436-28439-1-git-send-email-peterx@redhat.com>",
        "References": "<1505375436-28439-1-git-send-email-peterx@redhat.com>",
        "X-Scanned-By": "MIMEDefang 2.79 on 10.5.11.12",
        "X-Greylist": "Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.5.110.29]);\n\tThu, 14 Sep 2017 07:51:29 +0000 (UTC)",
        "X-detected-operating-system": "by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]\n\t[fuzzy]",
        "X-Received-From": "209.132.183.28",
        "Subject": "[Qemu-devel] [RFC 06/15] monitor: move the cur_mon hack deeper for\n\tQMP",
        "X-BeenThere": "qemu-devel@nongnu.org",
        "X-Mailman-Version": "2.1.21",
        "Precedence": "list",
        "List-Id": "<qemu-devel.nongnu.org>",
        "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>",
        "List-Archive": "<http://lists.nongnu.org/archive/html/qemu-devel/>",
        "List-Post": "<mailto:qemu-devel@nongnu.org>",
        "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>",
        "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>",
        "Cc": "Laurent Vivier <lvivier@redhat.com>, Fam Zheng <famz@redhat.com>, Juan\n\tQuintela <quintela@redhat.com>, Markus Armbruster <armbru@redhat.com>,\n\tpeterx@redhat.com, mdroth@linux.vnet.ibm.com,\n\tStefan Hajnoczi <shajnocz@redhat.com>, =?utf-8?q?Marc-Andr=C3=A9_Lure?=\n\t=?utf-8?q?au?= <marcandre.lureau@gmail.com>,\n\tPaolo Bonzini <pbonzini@redhat.com>, \"Dr . David Alan Gilbert\"\n\t<dgilbert@redhat.com>",
        "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org",
        "Sender": "\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"
    },
    "content": "In monitor_qmp_read(), we have the hack to temporarily replace the\ncur_mon pointer.  Now we move this hack deeper inside the QMP dispatcher\nroutine since the Monitor pointer can be passed in to that using the new\nJSON Parser opaque field now.\n\nThis does not make much sense as a single patch.  However, this will be\na big step for the next patch, when the QMP dispatcher routine will be\nsplitted from the QMP parser.\n\nSigned-off-by: Peter Xu <peterx@redhat.com>\n---\n monitor.c | 19 ++++++++++---------\n 1 file changed, 10 insertions(+), 9 deletions(-)",
    "diff": "diff --git a/monitor.c b/monitor.c\nindex 9096b64..d7eb3c2 100644\n--- a/monitor.c\n+++ b/monitor.c\n@@ -3822,7 +3822,7 @@ static void handle_qmp_command(JSONMessageParser *parser, GQueue *tokens,\n {\n     QObject *req, *rsp = NULL, *id = NULL;\n     QDict *qdict = NULL;\n-    Monitor *mon = cur_mon;\n+    Monitor *mon = opaque, *old_mon;\n     Error *err = NULL;\n \n     req = json_parser_parse_err(tokens, NULL, &err);\n@@ -3847,8 +3847,13 @@ static void handle_qmp_command(JSONMessageParser *parser, GQueue *tokens,\n         QDECREF(req_json);\n     }\n \n+    old_mon = cur_mon;\n+    cur_mon = mon;\n+\n     rsp = qmp_dispatch(cur_mon->qmp.commands, req);\n \n+    cur_mon = old_mon;\n+\n     if (mon->qmp.commands == &qmp_cap_negotiation_commands) {\n         qdict = qdict_get_qdict(qobject_to_qdict(rsp), \"error\");\n         if (qdict\n@@ -3885,13 +3890,9 @@ err_out:\n \n static void monitor_qmp_read(void *opaque, const uint8_t *buf, int size)\n {\n-    Monitor *old_mon = cur_mon;\n-\n-    cur_mon = opaque;\n-\n-    json_message_parser_feed(&cur_mon->qmp.parser, (const char *) buf, size);\n+    Monitor *mon = opaque;\n \n-    cur_mon = old_mon;\n+    json_message_parser_feed(&mon->qmp.parser, (const char *) buf, size);\n }\n \n static void monitor_read(void *opaque, const uint8_t *buf, int size)\n@@ -3965,7 +3966,7 @@ static void monitor_qmp_event(void *opaque, int event)\n         break;\n     case CHR_EVENT_CLOSED:\n         json_message_parser_destroy(&mon->qmp.parser);\n-        json_message_parser_init(&mon->qmp.parser, handle_qmp_command, NULL);\n+        json_message_parser_init(&mon->qmp.parser, handle_qmp_command, mon);\n         mon_refcount--;\n         monitor_fdsets_cleanup();\n         break;\n@@ -4115,7 +4116,7 @@ void monitor_init(Chardev *chr, int flags)\n         qemu_chr_fe_set_handlers(&mon->chr, monitor_can_read, monitor_qmp_read,\n                                  monitor_qmp_event, NULL, mon, NULL, true);\n         qemu_chr_fe_set_echo(&mon->chr, true);\n-        json_message_parser_init(&mon->qmp.parser, handle_qmp_command, NULL);\n+        json_message_parser_init(&mon->qmp.parser, handle_qmp_command, mon);\n     } else {\n         qemu_chr_fe_set_handlers(&mon->chr, monitor_can_read, monitor_read,\n                                  monitor_event, NULL, mon, NULL, true);\n",
    "prefixes": [
        "RFC",
        "06/15"
    ]
}