Changeset 49f4f33


Ignore:
Timestamp:
Apr 21, 2014 8:17:08 PM (7 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
490727b
Parents:
b84682f
Message:
  • SusiMail?:
    • Add MailPart? constructor, make fields final
    • Add ReadBuffer? constructor, make fields final
    • Move decoding to MailPart? method
    • Setters/getters for Mail header, body, part
    • Classes package private
    • Finals, constructors
Location:
apps/susimail/src/src/i2p/susi
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • apps/susimail/src/src/i2p/susi/util/ReadBuffer.java

    rb84682f r49f4f33  
    2929public class ReadBuffer {
    3030
    31         public byte content[];
    32         public int length, offset;
     31        public final byte content[];
     32        public final int length, offset;
    3333       
     34        public ReadBuffer(byte[] content, int offset, int length) {
     35                this.content = content;
     36                this.offset = offset;
     37                this.length = length;
     38        }
     39
    3440        public String toString()
    3541        {
  • apps/susimail/src/src/i2p/susi/webmail/Attachment.java

    rb84682f r49f4f33  
    2929 * @author user
    3030 */
    31 public class Attachment {
     31class Attachment {
    3232        private String fileName, contentType, transferEncoding;
    3333        private ReadBuffer buffer;
  • apps/susimail/src/src/i2p/susi/webmail/Mail.java

    rb84682f r49f4f33  
    2525
    2626import i2p.susi.util.Config;
     27import i2p.susi.debug.Debug;
    2728import i2p.susi.util.ReadBuffer;
     29import i2p.susi.webmail.encoding.DecodingException;
    2830import i2p.susi.webmail.encoding.Encoding;
    2931import i2p.susi.webmail.encoding.EncodingFactory;
     
    4749 * @author susi
    4850 */
    49 public class Mail {
     51class Mail {
    5052       
    51         public static final String DATEFORMAT = "date.format";
     53        private static final String DATEFORMAT = "date.format";
    5254       
    53         public static final String unknown = "unknown";
     55        private static final String unknown = "unknown";
    5456
    5557        public int id, size;
     
    5961                localFormattedDate,  // Current Locale, local time zone
    6062                shortSender, shortSubject,
    61                 quotedDate,  // Current Locale, local time zone, longer format
    62                 uidl;
     63                quotedDate;  // Current Locale, local time zone, longer format
     64        public final String uidl;
    6365        public Date date;
    64         public ReadBuffer header, body;
    65         public MailPart part;
     66        private ReadBuffer header, body;
     67        private MailPart part;
    6668        String[] to, cc;
    6769
     
    7274        public boolean deleted;
    7375       
    74         public Mail() {
     76        public Mail(String uidl) {
     77                this.uidl = uidl;
    7578                formattedSender = unknown;
    7679                formattedSubject = unknown;
     
    8285                error = "";
    8386        }
     87
     88        public ReadBuffer getHeader() {
     89                return header;
     90        }
     91
     92        public void setHeader(ReadBuffer rb) {
     93                if (rb == null)
     94                        return;
     95                header = rb;
     96                parseHeaders();
     97        }
     98
     99        public boolean hasHeader() {
     100                return header != null;
     101        }
     102
     103        public ReadBuffer getBody() {
     104                return body;
     105        }
     106
     107        public void setBody(ReadBuffer rb) {
     108                if (rb == null)
     109                        return;
     110                if (header == null)
     111                        setHeader(rb);
     112                body = rb;
     113                try {
     114                        part = new MailPart(rb);
     115                } catch (DecodingException de) {
     116                        Debug.debug(Debug.ERROR, "Decode error: " + de);
     117                }
     118        }
     119
     120        public boolean hasBody() {
     121                return body != null;
     122        }
     123
     124        public MailPart getPart() {
     125                return part;
     126        }
     127
     128        public boolean hasPart() {
     129                return part != null;
     130        }
     131
    84132        /**
    85133         *
  • apps/susimail/src/src/i2p/susi/webmail/MailCache.java

    rb84682f r49f4f33  
    3636 * @author user
    3737 */
    38 public class MailCache {
     38class MailCache {
    3939       
    4040        public static final boolean FETCH_HEADER = true;
     
    7474                                mail = mails.get( uidl );
    7575                                if( mail == null ) {
    76                                         newMail = new Mail();
     76                                        newMail = new Mail(uidl);
    7777                                        mails.put( uidl, newMail );
    7878                                }
     
    8080                        if( mail == null ) {
    8181                                mail = newMail;
    82                                 mail.uidl = uidl;
    8382                                mail.size = mailbox.getSize( uidl );
    8483                        }
     
    8685                                headerOnly = false;
    8786                       
    88                         boolean parseHeaders = mail.header == null;
    89                        
    9087                        if( headerOnly ) {
    91                                 if( mail.header == null )
    92                                         mail.header = mailbox.getHeader( uidl );
     88                                if(!mail.hasHeader())
     89                                        mail.setHeader(mailbox.getHeader(uidl));
    9390                        }
    9491                        else {
    95                                 if( mail.body == null ) {
    96                                         mail.body = mailbox.getBody( uidl );
    97                                         if( mail.body != null ) {
    98                                                 mail.header = mail.body;
    99                                                 MailPart.parse( mail );
    100                                         }
    101                                 }
    102                         }
    103                         if( parseHeaders && mail.header != null )
    104                                 mail.parseHeaders();
     92                                if(!mail.hasBody()) {
     93                                        mail.setBody(mailbox.getBody(uidl));
     94                                }
     95                        }
    10596                if( mail != null && mail.deleted )
    10697                        mail = null;
     
    130121                                mail = mails.get( uidl );
    131122                                if( mail == null ) {
    132                                         newMail = new Mail();
     123                                        newMail = new Mail(uidl);
    133124                                        mails.put( uidl, newMail );
    134125                                }
     
    136127                        if( mail == null ) {
    137128                                mail = newMail;
    138                                 mail.uidl = uidl;
    139129                                mail.size = mailbox.getSize( uidl );
    140130                        }
     
    144134                                        headerOnly = false;
    145135                                if( headerOnly ) {
    146                                         if( mail.header == null ) {
     136                                        if(!mail.hasHeader()) {
    147137                                                POP3Request pr = new POP3Request(mr, mail, true);
    148138                                                fetches.add(pr);
    149139                                        }
    150140                                } else {
    151                                         if( mail.body == null ) {
     141                                        if(!mail.hasBody()) {
    152142                                                POP3Request pr = new POP3Request(mr, mail, false);
    153143                                                fetches.add(pr);
     
    168158                                if (rb != null) {
    169159                                        Mail mail = pr.mail;
    170                                         boolean parseHeaders = mail.header == null;
    171160                                        if (pr.getHeaderOnly()) {
    172                                                 mail.header = rb;
     161                                                mail.setHeader(rb);
    173162                                        } else {
    174                                                 mail.header = rb;
    175                                                 mail.body = rb;
    176                                                 MailPart.parse(mail);
     163                                                mail.setBody(rb);
    177164                                        }
    178                                         if (parseHeaders)
    179                                                 mail.parseHeaders();
    180165                                }
    181166                        }
  • apps/susimail/src/src/i2p/susi/webmail/MailPart.java

    rb84682f r49f4f33  
    2424package i2p.susi.webmail;
    2525
     26import i2p.susi.debug.Debug;
    2627import i2p.susi.util.ReadBuffer;
     28import i2p.susi.webmail.encoding.DecodingException;
     29import i2p.susi.webmail.encoding.Encoding;
    2730import i2p.susi.webmail.encoding.EncodingFactory;
    2831
    2932import java.util.ArrayList;
     33import java.util.List;
    3034import java.util.Locale;
    3135
     
    3337 * @author susi23
    3438 */
    35 public class MailPart {
    36 
    37         public String headerLines[], type, boundary, encoding, name,
    38                 filename, description, disposition, charset, version;
    39         public int beginBody, begin, end;
    40         public ArrayList<MailPart> parts;
    41         public boolean multipart, message;
    42         public ReadBuffer buffer;
     39class MailPart {
     40
     41        public final String[] headerLines;
     42        public final String type, encoding, name,
     43                description, disposition, charset, version;
     44        private final int beginBody, begin, end;
     45        /** fixme never set */
     46        public final String filename = null;
     47        public final List<MailPart> parts;
     48        public final boolean multipart, message;
     49        public final ReadBuffer buffer;
    4350       
    44         public void parse( ReadBuffer readBuffer )
    45         {
    46                 parse( readBuffer, readBuffer.offset, readBuffer.length );
    47         }
    48 
    49         public void parse( ReadBuffer readBuffer, int offset, int length )
     51        public MailPart( ReadBuffer readBuffer ) throws DecodingException
     52        {
     53                this(readBuffer, readBuffer.offset, readBuffer.length);
     54        }
     55
     56        public MailPart( ReadBuffer readBuffer, int offset, int length ) throws DecodingException
    5057        {
    5158                begin = offset;
     
    5360                buffer = readBuffer;
    5461               
    55                 if( parts == null )
    56                         parts = new ArrayList<MailPart>();
    57                 else
    58                         parts.clear();
     62                parts = new ArrayList<MailPart>();
    5963
    6064                /*
    6165                 * parse header lines
    6266                 */
    63                 beginBody = end;
    64                 for( int i = begin; i < end - 4; i++ )
     67                int bb = end;
     68                for( int i = begin; i < end - 4; i++ ) {
    6569                        if( buffer.content[i] == '\r' &&
    6670                                        buffer.content[i+1] == '\n' &&
    6771                                        buffer.content[i+2] == '\r' &&
    6872                                        buffer.content[i+3] == '\n' ) {
    69                                 beginBody = i + 2;
     73                                bb = i + 2;
    7074                                break;
    7175                        }
     76                }
     77                beginBody = bb;
    7278                       
    73                 ReadBuffer decodedHeaders = null;
    74                 try {
    75                         decodedHeaders = EncodingFactory.getEncoding( "HEADERLINE" ).decode( buffer.content, begin, beginBody - begin );
    76                 }
    77                 catch (Exception e) {
    78                         e.printStackTrace();
    79                 }
    80                 if (decodedHeaders == null)
    81                         return;
     79                ReadBuffer decodedHeaders = EncodingFactory.getEncoding( "HEADERLINE" ).decode( buffer.content, begin, beginBody - begin );
    8280                headerLines = new String( decodedHeaders.content, decodedHeaders.offset, decodedHeaders.length ).split( "\r\n" );
     81
     82                String boundary = null;
     83                String x_encoding = null;
     84                String x_disposition = null;
     85                String x_type = null;
     86                boolean x_multipart = false;
     87                boolean x_message = false;
     88                String x_name = null;
     89                String x_charset = null;
     90                String x_description = null;
     91                String x_version = null;
    8392
    8493                for( int i = 0; i < headerLines.length; i++ )
    8594                {
    8695                        if( headerLines[i].toLowerCase(Locale.US).startsWith( "content-transfer-encoding: " ) ) {
    87                                 encoding = getFirstAttribute( headerLines[i] ).toLowerCase(Locale.US);
     96                                x_encoding = getFirstAttribute( headerLines[i] ).toLowerCase(Locale.US);
    8897                        }
    8998                        else if( headerLines[i].toLowerCase(Locale.US).startsWith( "content-disposition: " ) ) {
    90                                 disposition = getFirstAttribute( headerLines[i] ).toLowerCase(Locale.US);
     99                                x_disposition = getFirstAttribute( headerLines[i] ).toLowerCase(Locale.US);
    91100                                String str;
    92101                                str = getHeaderLineAttribute( headerLines[i], "filename" );
    93102                                if( str != null )
    94                                         name = str;
     103                                        x_name = str;
    95104                        }
    96105                        else if( headerLines[i].toLowerCase(Locale.US).startsWith( "content-type: " ) ) {
    97                                 type = getFirstAttribute( headerLines[i] ).toLowerCase(Locale.US);
     106                                x_type = getFirstAttribute( headerLines[i] ).toLowerCase(Locale.US);
    98107                                /*
    99108                                 * extract boundary, name and charset from content type
     
    103112                                if( str != null )
    104113                                        boundary = str;
    105                                 if( type != null && type.startsWith( "multipart" ) && boundary != null )
    106                                         multipart = true;
    107                                 if( type != null && type.startsWith( "message" ) )
    108                                         message = true;
     114                                if( x_type != null && x_type.startsWith( "multipart" ) && boundary != null )
     115                                        x_multipart = true;
     116                                if( x_type != null && x_type.startsWith( "message" ) )
     117                                        x_message = true;
    109118                                str = getHeaderLineAttribute( headerLines[i], "name" );
    110119                                if( str != null )
    111                                         name = str;
     120                                        x_name = str;
    112121                                str = getHeaderLineAttribute( headerLines[i], "charset" );
    113122                                if( str != null )
    114                                         charset = str.toUpperCase(Locale.US);
     123                                        x_charset = str.toUpperCase(Locale.US);
    115124                        }
    116125                        else if( headerLines[i].toLowerCase(Locale.US).startsWith( "content-description: " ) ) {
    117                                 description = getFirstAttribute( headerLines[i] );
     126                                x_description = getFirstAttribute( headerLines[i] );
    118127                        }
    119128                        else if( headerLines[i].toLowerCase(Locale.US).startsWith( "mime-version: " ) ) {
    120                                 version = getFirstAttribute( headerLines[i] );
    121                         }
    122                 }
     129                                x_version = getFirstAttribute( headerLines[i] );
     130                        }
     131                }
     132
     133                encoding = x_encoding;
     134                disposition = x_disposition;
     135                type = x_type;
     136                multipart = x_multipart;
     137                message = x_message;
     138                name = x_name;
     139                charset = x_charset;
     140                description = x_description;
     141                version = x_version;
     142
    123143                /*
    124144                 * parse body
     
    154174                                                        int endLastPart = i + 2;
    155175                                                        if( beginLastPart != -1 ) {
    156                                                                 MailPart newPart = new MailPart();
    157                                                                 newPart.parse( buffer, beginLastPart, endLastPart - beginLastPart );
     176                                                                MailPart newPart = new MailPart( buffer, beginLastPart, endLastPart - beginLastPart );
    158177                                                                parts.add( newPart );
    159178                                                        }
     
    166185                }
    167186                else if( message ) {
    168                         MailPart newPart = new MailPart();
    169                         newPart.parse( buffer, beginBody, end );
     187                        MailPart newPart = new MailPart(buffer, beginBody, end);
    170188                        parts.add( newPart );                   
    171189                }
    172190        }
    173         public static String getFirstAttribute( String line )
     191
     192        /**
     193         *  @param offset 2 for sendAttachment, 0 otherwise, don't know why
     194         *  @since 0.9.13
     195         */
     196        public ReadBuffer decode(int offset) throws DecodingException {
     197                String encg = encoding;
     198                if (encg == null) {
     199                        //throw new DecodingException("No encoding specified");
     200                        Debug.debug(Debug.DEBUG, "Warning: no transfer encoding found, fallback to 7bit.");
     201                        encg = "7bit";       
     202                }
     203                Encoding enc = EncodingFactory.getEncoding(encg);
     204                if(enc == null)
     205                        throw new DecodingException(_("No encoder found for encoding \\''{0}\\''.", WebMail.quoteHTML(encg)));
     206                return enc.decode(buffer.content, beginBody + offset, end - beginBody - offset);
     207        }
     208
     209        private static String getFirstAttribute( String line )
    174210        {
    175211                String result = null;
     
    185221                return result;
    186222        }
    187         public static String getHeaderLineAttribute( String line, String attributeName )
     223
     224        private static String getHeaderLineAttribute( String line, String attributeName )
    188225        {
    189226                String result = null;
     
    254291                return result;
    255292        }
    256         /**
    257          * @param mail
    258          */
    259         public static void parse(Mail mail) {
    260                 // TODO Auto-generated method stub
    261                
     293
     294        /** translate */
     295        private static String _(String s, Object o) {
     296                return Messages.getString(s, o);
    262297        }
    263298}
  • apps/susimail/src/src/i2p/susi/webmail/RequestWrapper.java

    rb84682f r49f4f33  
    5252 * @author user
    5353 */
    54 public class RequestWrapper {
     54class RequestWrapper {
    5555
    5656        private final HttpServletRequest httpRequest;
  • apps/susimail/src/src/i2p/susi/webmail/WebMail.java

    rb84682f r49f4f33  
    492492                        }
    493493                        if( showBody ) {                       
    494                                 String encoding = mailPart.encoding;
    495                                 if( encoding == null ) {
    496                                         encoding = "7bit";
    497                                         reason += _("Warning: no transfer encoding found, fallback to 7bit.") + br;
    498                                 }
    499                                 Encoding e = EncodingFactory.getEncoding( encoding );
    500                                 if( e == null ) {
    501                                         showBody = false;
    502                                         reason += _("No encoder found for encoding \\''{0}\\''.", quoteHTML( encoding ));
    503                                 }
    504                                 else {
    505494                                        String charset = mailPart.charset;
    506495                                        if( charset == null ) {
     
    509498                                        }
    510499                                        try {
    511                                                 ReadBuffer decoded = e.decode( mailPart.buffer.content, mailPart.beginBody, mailPart.end - mailPart.beginBody );
     500                                                ReadBuffer decoded = mailPart.decode(0);
    512501                                                BufferedReader reader = new BufferedReader( new InputStreamReader( new ByteArrayInputStream( decoded.content, decoded.offset, decoded.length ), charset ) );
    513502                                                body = new StringBuilder();
     
    526515                                                reason += _("Part ({0}) not shown, because of {1}", ident, e1.getClass().getName()) + br;
    527516                                        }
    528                                 }
    529517                        }
    530518                        if( html )
     
    568556         * @return escaped string
    569557         */
    570         private static String quoteHTML( String line )
     558        static String quoteHTML( String line )
    571559        {
    572560                if( line != null )
     
    850838                                if( uidl != null ) {
    851839                                        Mail mail = sessionObject.mailCache.getMail( uidl, MailCache.FETCH_ALL );
    852                                         if( mail.part == null ) {
    853                                                 mail.part = new MailPart();
    854                                                 mail.part.parse( mail.body );
    855                                         }
    856840                                        /*
    857841                                         * extract original sender from Reply-To: or From:
    858842                                         */
    859                                         if( mail.part != null ) {
     843                                        MailPart part = mail.getPart();
     844                                        if (part != null) {
    860845                                                if( reply || replyAll ) {
    861846                                                        if( mail.reply != null && Mail.validateAddress( mail.reply ) )
     
    869854                                                        StringWriter text2 = new StringWriter();
    870855                                                        PrintWriter pw2 = new PrintWriter( text2 );
    871                                                         showPart( pw2, mail.part, 0, TEXT_ONLY );
     856                                                        showPart( pw2, part, 0, TEXT_ONLY );
    872857                                                        pw2.flush();
    873858                                                        String[] lines = text2.toString().split( "\r\n" );
     
    934919                                                                pw.print( "Date: " + mail.dateString );
    935920                                                        pw.println();
    936                                                         showPart( pw, mail.part, 0, TEXT_ONLY );
     921                                                        showPart( pw, part, 0, TEXT_ONLY );
    937922                                                        pw.println( "----  " + _("end forwarded mail") + "  ----" );
    938923                                                        pw.flush();
     
    11411126                                int hashCode = Integer.parseInt( str );
    11421127                                Mail mail = sessionObject.mailCache.getMail( sessionObject.showUIDL, MailCache.FETCH_ALL );
    1143                                 MailPart part = getMailPartFromHashCode( mail.part, hashCode );
     1128                                MailPart part = getMailPartFromHashCode( mail.getPart(), hashCode );
    11441129                                if( part != null )
    11451130                                        sessionObject.showAttachment = part;
     
    15111496                }
    15121497        }
     1498
    15131499        /**
    15141500         * @param sessionObject
     
    15251511                       
    15261512                        if( part.encoding != null ) {
    1527                                 Encoding encoding = EncodingFactory.getEncoding( part.encoding );
    1528                                 if( encoding != null ) {
    15291513                                        try {
    1530                                                 content = encoding.decode( part.buffer.content, part.beginBody + 2, part.end - part.beginBody - 2 );
     1514                                                // why +2 ??
     1515                                                content = part.decode(2);
    15311516                                        }
    15321517                                        catch (DecodingException e) {
     
    15341519                                                content = null;
    15351520                                        }
    1536                                 }
    1537                                 else {
    1538                                         sessionObject.error += _("Error decoding content: No encoder found.");
    1539                                         content = null;
    1540                                 }
    15411521                        }
    15421522                        if( content != null ) {
     
    19231903                }
    19241904                Mail mail = sessionObject.mailCache.getMail( sessionObject.showUIDL, MailCache.FETCH_ALL );
    1925                 if( mail != null && mail.body != null && mail.part == null ) {
    1926                         mail.part = new MailPart();
    1927                         mail.part.parse( mail.body );
    1928                 }
    1929                 if(!RELEASE && mail != null && mail.body != null) {
     1905                if(!RELEASE && mail != null && mail.hasBody()) {
    19301906                        out.println( "<!--" );
    19311907                        // FIXME encoding, escaping --, etc... but disabled.
    1932                         out.println( quoteHTML( new String( mail.body.content, mail.body.offset, mail.body.length ) ) );
     1908                        ReadBuffer body = mail.getBody();
     1909                        out.println( quoteHTML( new String(body.content, body.offset, body.length ) ) );
    19331910                        out.println( "-->" );
    19341911                }
     
    19551932                                        "</td><td align=\"left\">" + mail.quotedDate + "</td></tr>\n" +
    19561933                                        "<tr><td colspan=\"2\" align=\"center\"><hr></td></tr>" );
    1957                         if( mail.body != null ) {
    1958                                 showPart( out, mail.part, 0, SHOW_HTML );
     1934                        if( mail.hasPart()) {
     1935                                showPart( out, mail.getPart(), 0, SHOW_HTML );
    19591936                        }
    19601937                        else {
  • apps/susimail/src/src/i2p/susi/webmail/encoding/Base64.java

    rb84682f r49f4f33  
    220220                        }
    221221                }
    222                 ReadBuffer readBuffer = new ReadBuffer();
    223                 readBuffer.content = out;
    224                 readBuffer.offset = 0;
    225                 readBuffer.length = written;
    226                 return readBuffer;
     222                return new ReadBuffer(out, 0, written);
    227223        }
    228224
  • apps/susimail/src/src/i2p/susi/webmail/encoding/DecodingException.java

    rb84682f r49f4f33  
    3030        private static final long serialVersionUID = 1L;
    3131
    32         DecodingException( String msg ) {
     32        public DecodingException( String msg ) {
    3333                super( msg );
    3434        }
  • apps/susimail/src/src/i2p/susi/webmail/encoding/EightBit.java

    rb84682f r49f4f33  
    6666        public ReadBuffer decode(byte[] in, int offset, int length)
    6767                throws DecodingException {
    68                 ReadBuffer readBuffer = new ReadBuffer();
    69                 readBuffer.content = in;
    70                 readBuffer.offset = offset;
    71                 readBuffer.length = length;
    72                 return readBuffer;
     68                return new ReadBuffer(in, offset, length);
    7369        }
    7470
  • apps/susimail/src/src/i2p/susi/webmail/encoding/HeaderLine.java

    rb84682f r49f4f33  
    294294                }
    295295                       
    296                 ReadBuffer readBuffer = new ReadBuffer();
    297                 readBuffer.content = out;
    298                 readBuffer.offset = 0;
    299                 readBuffer.length = written;
    300 
    301                 return readBuffer;
    302         }
     296                return new ReadBuffer(out, 0, written);
     297        }
     298
    303299        public ReadBuffer decode(String text) throws DecodingException {
    304300                return text != null ? decode( text.getBytes() ) : null;
    305301        }
     302
    306303        /* (non-Javadoc)
    307304         * @see i2p.susi.webmail.encoding.Encoding#decode(i2p.susi.webmail.util.ReadBuffer)
  • apps/susimail/src/src/i2p/susi/webmail/encoding/QuotedPrintable.java

    rb84682f r49f4f33  
    168168                }
    169169               
    170                 ReadBuffer readBuffer = new ReadBuffer();
    171                 readBuffer.content = out;
    172                 readBuffer.offset = 0;
    173                 readBuffer.length = written;
     170                return new ReadBuffer(out, 0, written);
     171        }
    174172
    175                 return readBuffer;
    176         }
    177173        /* (non-Javadoc)
    178174         * @see i2p.susi.webmail.encoding.Encoding#decode(i2p.susi.webmail.util.ReadBuffer)
  • apps/susimail/src/src/i2p/susi/webmail/encoding/SevenBit.java

    rb84682f r49f4f33  
    7878                        throw new DecodingException( "No 8bit Data allowed (" + b + ")" );
    7979                }
    80                 ReadBuffer readBuffer = new ReadBuffer();
    81                 readBuffer.content = in;
    82                 readBuffer.offset = backupOffset;
    83                 readBuffer.length = backupLength;
    84                 return readBuffer;
     80                return new ReadBuffer(in, backupOffset, backupLength);
    8581        }
    8682
  • apps/susimail/src/src/i2p/susi/webmail/pop3/POP3MailBox.java

    rb84682f r49f4f33  
    740740                        buf.setLength(0);
    741741                }
    742                 ReadBuffer readBuffer = new ReadBuffer();
    743                 readBuffer.content = baos.toByteArray();
    744                 readBuffer.offset = 0;
    745                 readBuffer.length = baos.size();
    746                 return readBuffer;
     742                return new ReadBuffer(baos.toByteArray(), 0, baos.size());
    747743        }
    748744
Note: See TracChangeset for help on using the changeset viewer.