OK, rather than implementing a roman numeral interface, are you able to
try patching with these 2 diffs :
Syslog some detail from estring :
--- estring-orig 2016-09-16 15:30:53.719083773 -0400
+++ estring.cpp 2016-09-16 15:31:22.560537709 -0400
@@ -8,7 +8,7 @@
#include <stdio.h>
// strlen
#include <string.h>
-
+#include <syslog.h>
/*! \class EStringData estring.h
@@ -437,6 +437,7 @@
void EString::appendNumber( int n, int base )
{
+syslog(LOG_USER | LOG_DEBUG, "In void EString::appendNumber( int n
(%d), int base (%d) )\n", n, base);
if ( n < 0 ) {
append( '-' );
n = -n;
@@ -446,6 +447,7 @@
void EString::appendNumber( uint n, int base )
{
+syslog(LOG_USER | LOG_DEBUG, "In void EString::appendNumber( uint n
(%u), int base (%d) )\n", n, base);
EString s( fromNumber( n, base ) );
@@ -946,6 +948,7 @@
EString EString::fromNumber( int64 n, uint base )
{
+syslog(LOG_USER | LOG_DEBUG, "In void EString::fromNumber( int64 n
(%lld), uint base (%u) )\n", n, base);
EString r;
r.appendNumber( n, base );
return r;
@@ -961,6 +964,7 @@
void EString::appendNumber( int64 n, uint base )
{
+syslog(LOG_USER | LOG_DEBUG, "In void EString::appendNumber( int64 n
(%lld), uint base (%u) )\n", n, base);
int64 top = 1;
while ( top * base <= n )
top = base * top;
And then to add some detail in the imap process :
--- fetch-orig 2016-09-16 15:35:39.369493459 -0400
+++ fetch.cpp 2016-09-18 13:30:01.502632438 -0400
@@ -31,7 +31,7 @@
#include "map.h"
#include "utf.h"
-
+#include <syslog.h>
static const char * legalAnnotationAttributes[] = {
"value",
@@ -186,6 +186,9 @@
( c->state() == Command::Blocked ||
c->state() == Command::Finished ||
c->state() == Command::Executing ) ) {
+syslog(LOG_USER | LOG_DEBUG, "modseq limit inserted is %lld", limit);
+EString theString = fn(limit);
+syslog(LOG_USER | LOG_DEBUG, "fn( %lld ) responds with %s", limit,
theString.cstr());
log( EString("Inserting flag update for modseq>") + fn( limit ) +
" and UIDs " + set.set() + " before " +
c->tag() + " " + c->name() );
@@ -194,6 +197,9 @@
setGroup( c->group() );
}
else {
+syslog(LOG_USER | LOG_DEBUG, "modseq limit appended is %lld", limit);
+EString theString = fn(limit);
+syslog(LOG_USER | LOG_DEBUG, "fn( %lld ) responds with %s", limit,
theString.cstr());
log( "Appending flag update for modseq>" + fn( limit ) +
" and UIDs " + set.set() );
i->commands()->append( this );
This will throw a fair bit of extra syslog entries, especially on a busy
server; if you can do this on something handling only your problematic
connection, that will be best as there will be more signal to noise.
Once you capture the syslog data, I recommend putting the code back the
way it was for now.
Send the syslog lines from this patch (both good and bad results); I'm
curious what values are behind the issue (sometimes things pop out). It
will at least give something to try and reproduce with.
Thanks
Jim
On 16/09/2016 16:56, Tom Ivar Helbekkmo wrote:
> No, it seems to be exactly when my MUA asks aox for messages in a
> mailbox newer than a specified message, that aox erroneously formats
> that message number as 'V' in its query to pgsql. Now, if PostgreSQL
> would accept Roman numerals, I guess I wouldn't see an error message...
>