File tree Expand file tree Collapse file tree 2 files changed +14
-2
lines changed Expand file tree Collapse file tree 2 files changed +14
-2
lines changed Original file line number Diff line number Diff line change @@ -509,14 +509,18 @@ class MailParser extends Transform {
509509 }
510510
511511 decodeAddresses ( addresses ) {
512+ let processedAddress = new WeakSet ( ) ;
512513 for ( let i = 0 ; i < addresses . length ; i ++ ) {
513514 let address = addresses [ i ] ;
514515 address . name = ( address . name || '' ) . toString ( ) . trim ( ) ;
515516
516- if ( ! address . address && / ^ ( = \? ( [ ^ ? ] + ) \? [ B b ] \? [ ^ ? ] * \? = ) ( \s * = \? ( [ ^ ? ] + ) \? [ B b ] \? [ ^ ? ] * \? = ) * $ / . test ( address . name ) ) {
517+ if ( ! address . address && / ^ ( = \? ( [ ^ ? ] + ) \? [ B b ] \? [ ^ ? ] * \? = ) ( \s * = \? ( [ ^ ? ] + ) \? [ B b ] \? [ ^ ? ] * \? = ) * $ / . test ( address . name ) && ! processedAddress . has ( address ) ) {
517518 let parsed = addressparser ( this . libmime . decodeWords ( address . name ) ) ;
518519 if ( parsed . length ) {
519- parsed . forEach ( entry => addresses . push ( entry ) ) ;
520+ parsed . forEach ( entry => {
521+ processedAddress . add ( entry ) ;
522+ addresses . push ( entry ) ;
523+ } ) ;
520524 }
521525
522526 // remove current element
Original file line number Diff line number Diff line change 1+ 'use strict' ;
2+
3+ const simpleParser = require ( '..' ) . simpleParser ;
4+
5+ module . exports [ 'Hangs when Reply-To invalid encoded' ] = async test => {
6+ await simpleParser ( 'Content-type: text/plain\r\nReply-To: =?U� -8?B?0=D0=BA=D0=BE=D0=B2?=\n\r\n1234' ) ;
7+ test . done ( ) ;
8+ } ;
You can’t perform that action at this time.
0 commit comments