Fastream Technologies wrote:
> I need to re-ask: Can I use one SSL Context per thread instead of per
> client object?

Sure, one SslContext per thread is the safe way as long as you 
only assign it to client objects created in the same thread 
(or .ThreadAttached). One context per client was true overkill. 
The AV might be a multi-thread issue indeed. Either in the OpenSSL
libraries or elsewhere in your code. Do you enable a single 
TSslDynamicLock object in main thread before any other OpenSSL call?    

-- 
Arno Garrels

> 
> Regards,
> 
> SubZero
> On Tue, May 10, 2011 at 11:43, Arno Garrels <arno.garr...@gmx.de>
> wrote: 
> 
>> Fastream Technologies wrote:
>>> Hello,
>>> 
>>> I have,
>>> 1. Downloaded the latest snapshot from the wiki page.
>>> 2. Modified ICS conditionals as
>>> 
>> NDEBUG;NO_STRICT;PANTERA;NOFORMS;NO_DEBUG_LOG;USE_SSL;SECURITY_WIN32;NO_ADVANCED_HTTP_CLIENT_FEATURES;NO_ADV_MT
>>> 3. Enabled TLSEXT from the SSL inc file
>>> 4. Compiled our proxy server and web stress tester tool.
>>> 
>>> It all worked except that when SSL is stress tested, it gives the AV
>>> as, http://www.fastream.com/ics/opensslissue.png
>> 
>> Did you know that ctrl + c copies content of the message box to the
>> clipboard, no need to upload screen shots.
>> 
>> Since the AV happens in code introduced in v1.0.0+ I would
>> test v0.9.8r and see whether that solves the problem.
>> Doesn't look like an ICS issue.
>> 
>> LIBEAY32.EVP_PKEY_missing_parameters:
>> 1105C060 8B4C2404         mov ecx,[esp+$04]
>> 1105C064 8B410C           mov eax,[ecx+$0c]
>> 1105C067 85C0             test eax,eax
>> 1105C069 740D             jz $1105c078
>> 1105C06B 8B4040           mov eax,[eax+$40]   <= ****
>> 1105C06E 85C0             test eax,eax
>> 1105C070 7406             jz $1105c078
>> 1105C072 894C2404         mov [esp+$04],ecx
>> 1105C076 FFE0             jmp eax
>> 1105C078 33C0             xor eax,eax
>> 1105C07A C3               ret
>> 1105C07B CC               int 3
>> 1105C07C CC               int 3
>> 1105C07D CC               int 3
>> 1105C07E CC               int 3
>> 1105C07F CC               int 3
>> 
>> 
>> int EVP_PKEY_missing_parameters(const EVP_PKEY *pkey)
>>  {
>>  if (pkey->ameth && pkey->ameth->param_missing)
>>  return pkey->ameth->param_missing(pkey);
>>  return 0;
>>  }
>> 
>> struct evp_pkey_asn1_method_st
>>  {
>>  int pkey_id;
>>  int pkey_base_id;
>>  unsigned long pkey_flags;
>> 
>>  char *pem_str;
>>  char *info;
>> 
>>  int (*pub_decode)(EVP_PKEY *pk, X509_PUBKEY *pub);
>>  int (*pub_encode)(X509_PUBKEY *pub, const EVP_PKEY *pk);
>>  int (*pub_cmp)(const EVP_PKEY *a, const EVP_PKEY *b);
>>  int (*pub_print)(BIO *out, const EVP_PKEY *pkey, int indent,
>>       ASN1_PCTX *pctx);
>> 
>>  int (*priv_decode)(EVP_PKEY *pk, PKCS8_PRIV_KEY_INFO *p8inf);
>>  int (*priv_encode)(PKCS8_PRIV_KEY_INFO *p8, const EVP_PKEY *pk);
>>  int (*priv_print)(BIO *out, const EVP_PKEY *pkey, int indent,
>>       ASN1_PCTX *pctx);
>> 
>>  int (*pkey_size)(const EVP_PKEY *pk);
>>  int (*pkey_bits)(const EVP_PKEY *pk);
>> 
>>  int (*param_decode)(EVP_PKEY *pkey,
>>    const unsigned char **pder, int derlen);
>>  int (*param_encode)(const EVP_PKEY *pkey, unsigned char **pder);
>>  int (*param_missing)(const EVP_PKEY *pk);                        <=
>>  **** [..]
>> 
>>  } /* EVP_PKEY_ASN1_METHOD */;
>> 
>> 
>> --
>> To unsubscribe or change your settings for TWSocket mailing list
>> please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
>> Visit our website at http://www.overbyte.be
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

Reply via email to