)]}'
{
  "commit": "c2067daf2b6a867573c2c03d38fc7c2d2495aa2b",
  "tree": "0edfbe0f5f4f4da0701f126de3aabf371cfeb550",
  "parents": [
    "e107f7398981b8f2527d53dc8cfb13a0f0909f49"
  ],
  "author": {
    "name": "Benoit TELLIER",
    "email": "btellier@linagora.com",
    "time": "Wed Jun 25 14:48:02 2025 +0200"
  },
  "committer": {
    "name": "Benoit TELLIER",
    "email": "btellier@linagora.com",
    "time": "Wed Jun 25 14:48:14 2025 +0200"
  },
  "message": "JAMES-3754 Relax Id command parsing\n\nSpotted on a prod:\n\norg.apache.james.imap.decode.DecodingException: Expected:\u0027\"\u0027 found:\u0027N\u0027\n\tat org.apache.james.imap.decode.ImapRequestLineReader.consumeChar(ImapRequestLineReader.java:720)\n\tat org.apache.james.imap.decode.ImapRequestLineReader.consumeQuoted(ImapRequestLineReader.java:739)\n\tat org.apache.james.imap.decode.ImapRequestLineReader.consumeQuoted(ImapRequestLineReader.java:736)\n\tat org.apache.james.imap.decode.ImapRequestLineReader.consumeQuoted(ImapRequestLineReader.java:728)\n\tat org.apache.james.imap.decode.parser.IDCommandParser.decode(IDCommandParser.java:78)\n\tat org.apache.james.imap.decode.base.AbstractImapCommandParser.parse(AbstractImapCommandParser.java:72)\n\tat org.apache.james.imap.decode.main.DefaultImapDecoder.decodeCommandNamed(DefaultImapDecoder.java:118)\n\tat org.apache.james.imap.decode.main.DefaultImapDecoder.decodeCommandTagged(DefaultImapDecoder.java:81)\n\tat org.apache.james.imap.decode.main.DefaultImapDecoder.decode(DefaultImapDecoder.java:71)\n\tat org.apache.james.imapserver.netty.ImapRequestFrameDecoder.parseImapMessage(ImapRequestFrameDecoder.java:150)\n\tat org.apache.james.imapserver.netty.ImapRequestFrameDecoder.decode(ImapRequestFrameDecoder.java:138)\n\tat io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:530)\n\tat io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:469)\n\tat io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\tat io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\tat io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)\n\tat io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\tat io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\tat io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:289)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\tat io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\tat io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1475)\n\tat io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1338)\n\tat io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1387)\n\tat io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:530)\n\tat io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:469)\n\tat io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\tat io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)\n\tat io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1407)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)\n\tat io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:918)\n\tat io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)\n\tat io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)\n\tat io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)\n\tat io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)\n\tat io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)\n\tat io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:994)\n\tat io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)\n\tat java.base/java.lang.Thread.run(Unknown Source)\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7d91f3111e8b5db985dc8b1e07bf3f29000c2492",
      "old_mode": 33188,
      "old_path": "mpt/impl/imap-mailbox/core/src/main/resources/org/apache/james/imap/scripts/Id.test",
      "new_id": "634b65ee642e2d2fb9aa6af470556a039efd0f7d",
      "new_mode": 33188,
      "new_path": "mpt/impl/imap-mailbox/core/src/main/resources/org/apache/james/imap/scripts/Id.test"
    },
    {
      "type": "modify",
      "old_id": "e0995307490068505c9be5e0c104c04a4a7c6809",
      "old_mode": 33188,
      "old_path": "protocols/imap/src/main/java/org/apache/james/imap/decode/parser/IDCommandParser.java",
      "new_id": "3a77dcec08bf8a2f835c76a93647b8612ddae9b0",
      "new_mode": 33188,
      "new_path": "protocols/imap/src/main/java/org/apache/james/imap/decode/parser/IDCommandParser.java"
    }
  ]
}
