<div style="line-height:1.7;color:#000000;font-size:14px;font-family:Arial"><div>Hi Sven</div><div>It came again.<br></div><div>Array(Object)>>doesNotUnderstand: #sameAs:<br>ZnRequest(ZnMessage)>>isConnectionClose<br>ZnRequest>>wantsConnectionClose<br>ZnResponse>>setConnectionCloseFor:<br>ZnManagingMultiThreadedServer(ZnMultiThreadedServer)>>augmentResponse:forRequest:<br>ZnManagingMultiThreadedServer(ZnMultiThreadedServer)>>executeOneRequestResponseOn:<br>[ [ self executeOneRequestResponseOn: stream ] whileFalse ] in ZnManagingMultiThreadedServer(ZnMultiThreadedServer)>>executeRequestResponseLoopOn:<br>[ activeProcess psValueAt: index put: anObject.<br>aBlock value ] in ZnCurrentServer(DynamicVariable)>>value:during:<br>BlockClosure>>ensure:<br>ZnCurrentServer(DynamicVariable)>>value:during:<br>ZnCurrentServer class(DynamicVariable class)>>value:during:<br>ZnManagingMultiThreadedServer(ZnMultiThreadedServer)>>executeRequestResponseLoopOn:<br>[ self executeRequestResponseLoopOn: stream ] in [ [ self executeRequestResponseLoopOn: stream ]<br> ensure: [ self logConnectionClosed: stream.<br>  self closeSocketStream: stream ] ] in [ [ [ self executeRequestResponseLoopOn: stream ]<br> ensure: [ self logConnectionClosed: stream.<br>  self closeSocketStream: stream ] ]<br> ifCurtailed: [ socket destroy ] ] in ZnManagingMultiThreadedServer(ZnMultiThreadedServer)>>serveConnectionsOn:<br>BlockClosure>>ensure:<br>[ [ self executeRequestResponseLoopOn: stream ]<br> ensure: [ self logConnectionClosed: stream.<br>  self closeSocketStream: stream ] ] in [ [ [ self executeRequestResponseLoopOn: stream ]<br> ensure: [ self logConnectionClosed: stream.<br>  self closeSocketStream: stream ] ]<br> ifCurtailed: [ socket destroy ] ] in ZnManagingMultiThreadedServer(ZnMultiThreadedServer)>>serveConnectionsOn:<br>BlockClosure>>ifCurtailed:<br>[ [ [ self executeRequestResponseLoopOn: stream ]<br> ensure: [ self logConnectionClosed: stream.<br>  self closeSocketStream: stream ] ]<br> ifCurtailed: [ socket destroy ] ] in ZnManagingMultiThreadedServer(ZnMultiThreadedServer)>>serveConnectionsOn:<br>[ self value.<br>Processor terminateActive ] in BlockClosure>>newProcess<br><br><br></div><div style="position:relative;zoom:1"></div><div id="divNeteaseMailCard"></div><br>At 2018-04-12 21:47:24, "lb" <liangbing64@126.com> wrote:<br> <blockquote id="isReplyContent" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid"><div style="line-height:1.7;color:#000000;font-size:14px;font-family:Arial"><div>Hi, Sven,</div><div>Thank you very much,</div><div>But I am not familiar with HTTP. I recover to original code now. </div><div>when that occurs next time, I will copy the error stack here.<br><br><br>Best regards</div><div><br></div><div>Liang<br><br></div><div style="position:relative;zoom:1"></div><div></div><br><pre><br>At 2018-04-12 20:21:07, "Sven Van Caekenberghe" <<a href="mailto:sven@stfx.eu">sven@stfx.eu</a>> wrote:
>Hi Liang,
>
>Headers in HTTP (as represented/implemented by the ZnHeaders object in Pharo) can be multi-valued. That is, a certain header name (key) can occur more than once. That creates a multi-valued situation. For example, there can be multiple cookies being set. But almost always, there is only one header with a unique name.
>
>What you see must be the result of the 'Connection:close' header line being present twice. I would like to understand how that can happen. Do you have any idea ?
>
>I am also not sure (I should check) what the spec says.
>
>What is special here is that although the header line occurs twice, it has the same/identical value.
>
>In any case, it is the first time I hear about this situation.
>
>Sven 
>
>> On 12 Apr 2018, at 11:30, lb <<a href="mailto:liangbing64@126.com">liangbing64@126.com</a>> wrote:
>> 
>> Hi,
>> my website always receives a sameAs: DNU from :
>> ZnMessage>>isConnectionClose
>>  | value |
>>  value := self headers at: 'Connection' ifAbsent: [ ^ false ].
>>  ^ value sameAs: 'close'
>> 
>> value is an Array like #('close' 'close').
>> 
>> I fix like this to avoid receiving DNU message.
>> isConnectionClose
>>  | value |
>>  value := self headers at: 'Connection' ifAbsent: [ ^ false ].
>>  value isArray ifTrue: [^ (value at: 1) sameAs: 'close'].
>>  value isString ifTrue: [^ value sameAs: 'close'].
>>  ^false
>> I can not confirm that fix is correct.
>> Liang
>> _______________________________________________
>> seaside mailing list
>> <a href="mailto:seaside@lists.squeakfoundation.org">seaside@lists.squeakfoundation.org</a>
>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>
>_______________________________________________
>seaside mailing list
><a href="mailto:seaside@lists.squeakfoundation.org">seaside@lists.squeakfoundation.org</a>
>http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
</pre></div></blockquote></div>