I ran into an out-of-external semaphores error when testing the Tropo
API. It uses ZnEasy to post data to their api servers. I know I can
raise the semaphore limit by running:
Smalltalk vm maxExternalSemaphoresSilently: 3000.
then saving. But I wondered if changing ZnClient>>#close to this:
close
"Close any HTTP network connection that I might have kept open."
connection
ifNotNil: [
connection close: self isOneShot.
connection := nil.
state := #closed ].
lastUsed := nil
And then adding these two methods:
ZdcAbstractSocketStream>>#close:
close: andDestroy
"Close the stream, flush if necessary"
self flush.
socket isNil
ifTrue: [ ^ self ].
self socketClose: andDestroy.
socket := nil
ZdcAbstractSocketStream>>#socketClose: andDestroy
andDestroy
ifTrue: [ socket closeAndDestroy ]
ifFalse: [ socket close ]
might enable ZnClient to clean up after it issues 'one shot' requests in
a safe manner.
I can submit a change if so ( an a test! ).
Thanks
Paul