mirror of
https://github.com/curl/curl.git
synced 2026-07-23 11:27:18 +03:00
build: set -O3 and tune WinCE in CI, fix getpart, vtls_scache fallouts
- GHA/windows/WinCE:
- set `-O3 -DNDEBUG` C flags manually for the CMake mingw32ce build.
CMake doesn't recognize the platform and fails to add them. To match
autotools (using `-O2`), and hit similar compiler warnings.
- enable parallel builds for cmake.
- tune parallelism for cmake using unity batches.
- tune parallelism for autotools.
Follow-up to 2a292c3984 #15975
- tests: fix potentially uninitialized value in `readline()` in
`getpart.c`. Detected by gcc 4.4.0 `-O2` (Windows CE) jobs:
```
tests/server/getpart.c: In function 'getpart':
tests/server/getpart.c:298: error: 'datalen' may be used uninitialized in this function
```
Ref: https://github.com/curl/curl/actions/runs/13522595237/job/37785147505?pr=16476#step:11:25
Follow-up to 592880a3ca
- vtls_scache: rework returning pointer to avoid compiler warning seen
with `-O3` gcc 4.4.0 builds (Windows CE/schannel):
```
lib/vtls/schannel.c: In function 'schannel_connect_step1':
lib/vtls/vtls_scache.c:975: error: dereferencing pointer 'old_cred.4474' does break strict-aliasing rules
lib/vtls/vtls_scache.c:985: error: dereferencing pointer 'old_cred.4474' does break strict-aliasing rules
lib/vtls/schannel.c:959: note: initialized from here
```
Ref: https://github.com/curl/curl/actions/runs/13523868335/job/37789610845#step:9:25
Follow-up to fa0ccd9f1f #15774
Closes #16476
This commit is contained in:
parent
4f98f354b1
commit
c028a243f2
6 changed files with 28 additions and 26 deletions
|
|
@ -898,7 +898,6 @@ schannel_connect_step1(struct Curl_cfilter *cf, struct Curl_easy *data)
|
|||
unsigned char alpn_buffer[128];
|
||||
#endif
|
||||
SECURITY_STATUS sspi_status = SEC_E_OK;
|
||||
struct Curl_schannel_cred *old_cred = NULL;
|
||||
CURLcode result;
|
||||
|
||||
DEBUGASSERT(backend);
|
||||
|
|
@ -955,9 +954,10 @@ schannel_connect_step1(struct Curl_cfilter *cf, struct Curl_easy *data)
|
|||
|
||||
/* check for an existing reusable credential handle */
|
||||
if(ssl_config->primary.cache_session) {
|
||||
struct Curl_schannel_cred *old_cred;
|
||||
Curl_ssl_scache_lock(data);
|
||||
if(Curl_ssl_scache_get_obj(cf, data, connssl->peer.scache_key,
|
||||
(void **)&old_cred)) {
|
||||
old_cred = Curl_ssl_scache_get_obj(cf, data, connssl->peer.scache_key);
|
||||
if(old_cred) {
|
||||
backend->cred = old_cred;
|
||||
DEBUGF(infof(data, "schannel: reusing existing credential handle"));
|
||||
|
||||
|
|
|
|||
|
|
@ -1333,8 +1333,9 @@ static CURLcode sectransp_connect_step1(struct Curl_cfilter *cf,
|
|||
size_t ssl_sessionid_len;
|
||||
|
||||
Curl_ssl_scache_lock(data);
|
||||
if(Curl_ssl_scache_get_obj(cf, data, connssl->peer.scache_key,
|
||||
(void **)&ssl_sessionid)) {
|
||||
ssl_sessionid = Curl_ssl_scache_get_obj(cf, data,
|
||||
connssl->peer.scache_key);
|
||||
if(ssl_sessionid) {
|
||||
/* we got a session id, use it! */
|
||||
err = SSLSetPeerID(backend->ssl_ctx, ssl_sessionid,
|
||||
strlen(ssl_sessionid));
|
||||
|
|
|
|||
|
|
@ -962,31 +962,29 @@ out:
|
|||
return result;
|
||||
}
|
||||
|
||||
bool Curl_ssl_scache_get_obj(struct Curl_cfilter *cf,
|
||||
struct Curl_easy *data,
|
||||
const char *ssl_peer_key,
|
||||
void **sobj)
|
||||
void *Curl_ssl_scache_get_obj(struct Curl_cfilter *cf,
|
||||
struct Curl_easy *data,
|
||||
const char *ssl_peer_key)
|
||||
{
|
||||
struct Curl_ssl_scache *scache = cf_ssl_scache_get(data);
|
||||
struct ssl_primary_config *conn_config = Curl_ssl_cf_get_primary_config(cf);
|
||||
struct Curl_ssl_scache_peer *peer = NULL;
|
||||
CURLcode result;
|
||||
void *sobj;
|
||||
|
||||
*sobj = NULL;
|
||||
if(!scache)
|
||||
return FALSE;
|
||||
return NULL;
|
||||
|
||||
result = cf_ssl_find_peer_by_key(data, scache, ssl_peer_key, conn_config,
|
||||
&peer);
|
||||
if(result)
|
||||
return FALSE;
|
||||
return NULL;
|
||||
|
||||
if(peer)
|
||||
*sobj = peer->sobj;
|
||||
sobj = peer ? peer->sobj : NULL;
|
||||
|
||||
CURL_TRC_SSLS(data, "%s cached session for '%s'",
|
||||
*sobj ? "Found" : "No", ssl_peer_key);
|
||||
return !!*sobj;
|
||||
sobj ? "Found" : "No", ssl_peer_key);
|
||||
return sobj;
|
||||
}
|
||||
|
||||
void Curl_ssl_scache_remove_all(struct Curl_cfilter *cf,
|
||||
|
|
|
|||
|
|
@ -85,12 +85,11 @@ void Curl_ssl_scache_unlock(struct Curl_easy *data);
|
|||
* @param cf the connection filter wanting to use it
|
||||
* @param data the transfer involved
|
||||
* @param ssl_peer_key the key for lookup
|
||||
* @param sobj on return, the object for the peer key or NULL
|
||||
* @retval sobj the object for the peer key or NULL
|
||||
*/
|
||||
bool Curl_ssl_scache_get_obj(struct Curl_cfilter *cf,
|
||||
struct Curl_easy *data,
|
||||
const char *ssl_peer_key,
|
||||
void **sobj);
|
||||
void *Curl_ssl_scache_get_obj(struct Curl_cfilter *cf,
|
||||
struct Curl_easy *data,
|
||||
const char *ssl_peer_key);
|
||||
|
||||
typedef void Curl_ssl_scache_obj_dtor(void *sobj);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue