1
0
Fork 0
mirror of https://github.com/warmcat/libwebsockets.git synced 2025-03-09 00:00:04 +01:00

cpd: pass up lws_ss_request_tx ret

This commit is contained in:
Andy Green 2021-08-10 15:59:42 +01:00
parent f3d5b9b99a
commit e644bb4a6e
17 changed files with 63 additions and 60 deletions

View file

@ -447,7 +447,7 @@ typedef struct lws_ss_info {
* formats, \p ppayload_fmt is set to point to the name of the needed payload
* format from the policy database if non-NULL.
*/
LWS_VISIBLE LWS_EXTERN int
LWS_VISIBLE LWS_EXTERN int LWS_WARN_UNUSED_RESULT
lws_ss_create(struct lws_context *context, int tsi, const lws_ss_info_t *ssi,
void *opaque_user_data, struct lws_ss_handle **ppss,
struct lws_sequencer *seq_owner, const char **ppayload_fmt);
@ -471,9 +471,9 @@ lws_ss_destroy(struct lws_ss_handle **ppss);
* write on this stream, the \p *tx callback will occur with an empty buffer for
* the stream owner to fill in.
*
* Returns 0 or LWSSSSRET_SS_HANDLE_DESTROYED
* Returns 0 or LWSSSSRET_DESTROY_ME
*/
LWS_VISIBLE LWS_EXTERN lws_ss_state_return_t
LWS_VISIBLE LWS_EXTERN lws_ss_state_return_t LWS_WARN_UNUSED_RESULT
lws_ss_request_tx(struct lws_ss_handle *pss);
/**
@ -489,7 +489,7 @@ lws_ss_request_tx(struct lws_ss_handle *pss);
* This api variant should be used when it's possible the payload will go out
* over h1 with x-web-form-urlencoded or similar Content-Type.
*/
LWS_VISIBLE LWS_EXTERN lws_ss_state_return_t
LWS_VISIBLE LWS_EXTERN lws_ss_state_return_t LWS_WARN_UNUSED_RESULT
lws_ss_request_tx_len(struct lws_ss_handle *pss, unsigned long len);
/**
@ -505,7 +505,7 @@ lws_ss_request_tx_len(struct lws_ss_handle *pss, unsigned long len);
* LWSSSSRET_OK means the connection is ongoing.
*
*/
LWS_VISIBLE LWS_EXTERN lws_ss_state_return_t
LWS_VISIBLE LWS_EXTERN lws_ss_state_return_t LWS_WARN_UNUSED_RESULT
lws_ss_client_connect(struct lws_ss_handle *h);
/**

View file

@ -362,6 +362,7 @@ lws_ss_deserialize_parse(struct lws_ss_serialization_parser *par,
lws_ss_conn_states_t *state, void *parconn,
lws_ss_handle_t **pss, lws_ss_info_t *ssi, char client)
{
lws_ss_state_return_t r;
lws_ss_metadata_t *pm;
lws_sspc_handle_t *h;
uint8_t pre[23];
@ -1003,11 +1004,14 @@ payload_ff:
lwsl_notice("%s: set payload len %u\n", __func__,
par->temp32);
if (proxy_pss_to_ss_h(pss))
lws_ss_request_tx_len(proxy_pss_to_ss_h(pss),
(unsigned long)par->temp32);
par->ps = RPAR_TYPE;
if (proxy_pss_to_ss_h(pss)) {
r = lws_ss_request_tx_len(proxy_pss_to_ss_h(pss),
(unsigned long)par->temp32);
if (r == LWSSSSRET_DESTROY_ME)
goto hangup;
}
break;
case RPAR_METADATA_NAMELEN:

View file

@ -1512,7 +1512,7 @@ lws_ss_request_tx(lws_ss_handle_t *h)
lws_ss_state_return_t r;
r = _lws_ss_request_tx(h);
_lws_ss_handle_state_ret_CAN_DESTROY_HANDLE(r, NULL, &h);
return r;
}

View file

@ -227,9 +227,8 @@ ss_api_amazon_auth_state(void *userobj, void *sh, lws_ss_constate_t state,
s = lws_system_blob_get_size(ab);
if (!s)
lwsl_debug("%s: no auth blob\n", __func__);
lws_ss_request_tx_len(m->ss, (unsigned long)s);
m->pos = 0;
break;
return lws_ss_request_tx_len(m->ss, (unsigned long)s);
case LWSSSCS_DISCONNECTED:
/*

View file

@ -47,8 +47,7 @@ ss_cpd_state(void *userobj, void *sh, lws_ss_constate_t state,
switch (state) {
case LWSSSCS_CREATING:
lws_ss_start_timeout(m->ss, 3 * LWS_US_PER_SEC);
lws_ss_request_tx(m->ss);
break;
return lws_ss_request_tx(m->ss);
case LWSSSCS_QOS_ACK_REMOTE:
lws_system_cpd_set(cx, LWS_CPD_INTERNET_OK);

View file

@ -102,8 +102,8 @@ ss_fetch_policy_state(void *userobj, void *sh, lws_ss_constate_t state,
switch (state) {
case LWSSSCS_CREATING:
lws_ss_request_tx(m->ss);
break;
return lws_ss_request_tx(m->ss);
case LWSSSCS_CONNECTING:
break;

View file

@ -169,8 +169,8 @@ notify:
}
static const struct lws_protocols protocols[] = {
{ "seq-test-http", callback_http, 0, 0, },
{ NULL, NULL, 0, 0 }
{ "seq-test-http", callback_http, 0, 0, 0, NULL, 0 },
LWS_PROTOCOL_LIST_TERM
};

View file

@ -183,11 +183,11 @@ myss_tx_post(void *userobj, lws_ss_tx_ordinal_t ord, uint8_t *buf, size_t *len,
*len = budget;
m->sent += budget;
if (m->sent != next_test->send)
lws_ss_request_tx(m->ss);
else
*flags |= LWSSS_FLAG_EOM;
return lws_ss_request_tx(m->ss);
return 0;
*flags |= LWSSS_FLAG_EOM;
return LWSSSSRET_OK;
}
static lws_ss_state_return_t
@ -195,15 +195,18 @@ myss_state(void *userobj, void *sh, lws_ss_constate_t state,
lws_ss_tx_ordinal_t ack)
{
myss_t *m = (myss_t *)userobj;
lws_ss_state_return_t r;
lwsl_notice("%s: %s, ord 0x%x\n", __func__, lws_ss_state_name((int)state),
(unsigned int)ack);
switch (state) {
case LWSSSCS_CREATING:
lws_ss_client_connect(m->ss);
r = lws_ss_client_connect(m->ss);
if (r)
return r;
if (next_test->send)
lws_ss_request_tx_len(m->ss, (unsigned long)next_test->send);
return lws_ss_request_tx_len(m->ss, (unsigned long)next_test->send);
break;
case LWSSSCS_ALL_RETRIES_FAILED:
lwsl_notice("%s: Connection failed\n", __func__);
@ -258,7 +261,7 @@ happy:
break;
}
return 0;
return LWSSSSRET_OK;
}
static const lws_ss_info_t ssi_get = {

View file

@ -86,7 +86,7 @@ myss_state(void *userobj, void *sh, lws_ss_constate_t state,
switch (state) {
case LWSSSCS_CREATING:
lws_ss_client_connect(m->ss);
return lws_ss_client_connect(m->ss);
break;
default:
break;

View file

@ -187,7 +187,7 @@ ss_avs_metadata_tx(void *userobj, lws_ss_tx_ordinal_t ord, uint8_t *buf,
lwsl_info("%s: tx done\n", __func__);
m->pos = (size_t)-1l; /* ban subsequent until new stream */
} else
lws_ss_request_tx(m->ss);
return lws_ss_request_tx(m->ss);
lwsl_hexdump_info(buf, *len);
@ -211,7 +211,7 @@ ss_avs_metadata_tx(void *userobj, lws_ss_tx_ordinal_t ord, uint8_t *buf,
if (m->pos == tot) {
*flags |= LWSSS_FLAG_EOM;
m->pos = 0; /* for next time */
lws_ss_request_tx(m->ss);
return lws_ss_request_tx(m->ss);
}
lwsl_hexdump_info(buf, *len);

View file

@ -318,13 +318,15 @@ myss_tx(void *userobj, lws_ss_tx_ordinal_t ord, uint8_t *buf, size_t *len,
memcpy(buf, postbody + m->pos, *len);
m->pos += *len;
if (m->pos == m->len)
*flags |= LWSSS_FLAG_EOM;
else
lws_ss_request_tx(m->ss);
lwsl_notice("%s: write %d flags %d\n", __func__, (int)*len, (int)*flags);
if (m->pos != m->len)
return lws_ss_request_tx(m->ss);
return 0;
}
@ -353,11 +355,12 @@ myss_state(void *userobj, void *sh, lws_ss_constate_t state,
/* provide a hint about the payload size */
m->pos = 0;
m->len = strlen(postbody);
lws_ss_request_tx_len(m->ss, (unsigned long)strlen(postbody));
break;
return lws_ss_request_tx_len(m->ss, (unsigned long)strlen(postbody));
case LWSSSCS_CONNECTED:
lws_ss_request_tx(m->ss);
break;
return lws_ss_request_tx(m->ss);
case LWSSSCS_ALL_RETRIES_FAILED:
/* if we're out of retries, we want to close the app and FAIL */
interrupted = 1;

View file

@ -182,8 +182,8 @@ myss_state(void *userobj, void *sh, lws_ss_constate_t state,
switch (state) {
case LWSSSCS_CREATING:
lws_ss_request_tx(m->ss);
break;
return lws_ss_request_tx(m->ss);
case LWSSSCS_ALL_RETRIES_FAILED:
/* if we're out of retries, we want to close the app and FAIL */
interrupted = 1;
@ -266,7 +266,7 @@ min_sec_str_sequencer_cb(struct lws_sequencer *seq, void *user, int event,
case LWSSEQ_TIMED_OUT: /* current step timed out */
if (s->state == SEQ_RECONNECT_WAIT)
lws_ss_request_tx(s->ss);
return lws_ss_request_tx(s->ss);
break;
/*
@ -277,8 +277,8 @@ min_sec_str_sequencer_cb(struct lws_sequencer *seq, void *user, int event,
case LWSSEQ_SS_STATE_BASE + LWSSSCS_CREATING:
lwsl_info("%s: seq LWSSSCS_CREATING\n", __func__);
lws_ss_request_tx(s->ss);
break;
return lws_ss_request_tx(s->ss);
case LWSSEQ_SS_STATE_BASE + LWSSSCS_DISCONNECTED:
lwsl_info("%s: seq LWSSSCS_DISCONNECTED\n", __func__);
break;

View file

@ -54,9 +54,8 @@ spam_sul_cb(struct lws_sorted_usec_list *sul)
{
myss_srv_t *m = lws_container_of(sul, myss_srv_t, sul);
lws_ss_request_tx(m->ss);
lws_sul_schedule(lws_ss_get_context(m->ss), 0, &m->sul, spam_sul_cb,
if (!lws_ss_request_tx(m->ss))
lws_sul_schedule(lws_ss_get_context(m->ss), 0, &m->sul, spam_sul_cb,
100 * LWS_US_PER_MS);
}
@ -90,8 +89,7 @@ myss_raw_state(void *userobj, void *sh, lws_ss_constate_t state,
lws_sul_cancel(&m->sul);
break;
case LWSSSCS_CONNECTED:
lws_ss_request_tx(m->ss);
break;
return lws_ss_request_tx(m->ss);
default:
break;

View file

@ -62,7 +62,7 @@ myss_state(void *userobj, void *sh, lws_ss_constate_t state,
switch (state) {
case LWSSSCS_CREATING:
lws_ss_request_tx(m->ss);
return lws_ss_request_tx(m->ss);
break;
case LWSSSCS_ALL_RETRIES_FAILED:
/* if we're out of retries, we want to close the app and FAIL */

View file

@ -134,9 +134,8 @@ spam_sul_cb(struct lws_sorted_usec_list *sul)
{
myss_srv_t *m = lws_container_of(sul, myss_srv_t, sul);
lws_ss_request_tx(m->ss);
lws_sul_schedule(lws_ss_get_context(m->ss), 0, &m->sul, spam_sul_cb,
if (!lws_ss_request_tx(m->ss))
lws_sul_schedule(lws_ss_get_context(m->ss), 0, &m->sul, spam_sul_cb,
100 * LWS_US_PER_MS);
}
@ -170,8 +169,8 @@ myss_srv_state(void *userobj, void *sh, lws_ss_constate_t state,
lws_sul_cancel(&m->sul);
break;
case LWSSSCS_CREATING:
lws_ss_request_tx(m->ss);
break;
return lws_ss_request_tx(m->ss);
case LWSSSCS_ALL_RETRIES_FAILED:
/* if we're out of retries, we want to close the app and FAIL */
interrupted = 1;
@ -201,10 +200,9 @@ myss_srv_state(void *userobj, void *sh, lws_ss_constate_t state,
/*
* ...it's going to be whatever size it is (and request tx)
*/
lws_ss_request_tx_len(m->ss, (unsigned long)
return lws_ss_request_tx_len(m->ss, (unsigned long)
(multipart ? strlen(multipart_html) :
strlen(html)));
break;
case LWSSSCS_SERVER_UPGRADE:
@ -217,8 +215,8 @@ myss_srv_state(void *userobj, void *sh, lws_ss_constate_t state,
m->upgraded = 1;
lws_ss_change_handlers(m->ss, myss_ws_rx, myss_ws_tx, NULL);
lws_ss_request_tx(m->ss); /* we want to start sending numbers */
break;
return lws_ss_request_tx(m->ss); /* we want to start sending numbers */
default:
break;
}

View file

@ -57,7 +57,7 @@ ss_s3_tx(void *userobj, lws_ss_tx_ordinal_t ord, uint8_t *buf, size_t *len,
*flags |= LWSSS_FLAG_EOM;
// m->pos = 0; /* we only want to send once */
} else
lws_ss_request_tx(m->ss);
return lws_ss_request_tx(m->ss);
return LWSSSSRET_OK;
}
@ -173,12 +173,10 @@ ss_s3_state(void *userobj, void *sh, lws_ss_constate_t state,
timestamp, strlen(timestamp)))
return LWSSSSRET_DESTROY_ME;
lws_ss_request_tx_len(m->ss, m->total);
break;
return lws_ss_request_tx_len(m->ss, m->total);
case LWSSSCS_CONNECTED:
lws_ss_request_tx(m->ss);
break;
return lws_ss_request_tx(m->ss);
case LWSSSCS_DISCONNECTED:
return LWSSSSRET_DESTROY_ME;

View file

@ -94,7 +94,8 @@ sul_tx_periodic_cb(lws_sorted_usec_list_t *sul)
myss_t *m = lws_container_of(sul, myss_t, sul);
lwsl_info("%s: requesting TX\n", __func__);
lws_ss_request_tx(m->ss);
if (lws_ss_request_tx(m->ss))
lwsl_info("%s: req failed\n", __func__);
}
static lws_ss_state_return_t