Lines Matching defs:response
57 static void gas_server_free_response(struct gas_server_response *response);
62 struct gas_server_response *response = eloop_ctx;
66 response, MAC2STR(response->dst), response->dialog_token,
67 response->freq, response->frag_id,
68 (unsigned long) response->offset,
69 (unsigned long) (response->resp ?
70 wpabuf_len(response->resp) : 0));
71 response->handler->status_cb(response->handler->ctx,
72 response->resp, 0);
73 response->resp = NULL;
74 dl_list_del(&response->list);
75 gas_server_free_response(response);
79 static void gas_server_free_response(struct gas_server_response *response)
81 if (!response)
83 wpa_printf(MSG_DEBUG, "DPP: Free GAS response @%p", response);
84 eloop_cancel_timeout(gas_server_response_timeout, response, NULL);
85 wpabuf_free(response->resp);
86 os_free(response);
92 struct gas_server_response *response,
95 struct gas_server_handler *handler = response->handler;
96 size_t max_len = (response->freq > 56160) ? 928 : 1400;
102 dl_list_del(&response->list);
103 gas_server_free_response(response);
108 /* Need more time to prepare the response */
110 response->comeback_delay = comeback_delay;
116 /* Full response fits into the initial response */
121 resp = gas_build_initial_resp(response->dialog_token,
128 dl_list_del(&response->list);
129 gas_server_free_response(response);
146 wpa_printf(MSG_DEBUG, "GAS: No response available yet");
149 "GAS: Need to fragment query response");
152 "GAS: Full query response fits in the GAS Initial Response frame");
154 response->offset = resp_frag_len;
155 response->resp = query_resp;
156 response->initial_resp_sent = true;
157 gas->tx(gas->ctx, response->freq, response->dst, resp,
161 gas_server_response_timeout, response, NULL);
175 struct gas_server_response *response;
221 response = os_zalloc(sizeof(*response));
222 if (!response)
225 wpa_printf(MSG_DEBUG, "DPP: Allocated GAS response @%p", response);
235 response->freq = freq;
236 response->handler = handler;
237 os_memcpy(response->dst, sa, ETH_ALEN);
238 response->dialog_token = dialog_token;
239 dl_list_add(&gas->responses, &response->list);
243 resp = handler->req_cb(handler->ctx, response, sa, query_req,
249 "GAS: Handler requested short delay before sending out the initial response");
256 gas_server_send_resp(gas, response, resp, comeback_delay);
262 gas_server_free_response(response);
268 gas_server_handle_rx_comeback_req(struct gas_server_response *response)
270 struct gas_server_handler *handler = response->handler;
272 size_t max_len = (response->freq > 56160) ? 928 : 1400;
278 if (!response->resp) {
279 resp = gas_build_comeback_resp(response->dialog_token,
281 response->comeback_delay,
284 dl_list_del(&response->list);
285 gas_server_free_response(response);
302 remaining = wpabuf_len(response->resp) - response->offset;
311 resp = gas_build_comeback_resp(response->dialog_token,
313 response->frag_id++,
318 dl_list_del(&response->list);
319 gas_server_free_response(response);
332 wpabuf_put_data(resp, wpabuf_head_u8(response->resp) + response->offset,
335 response->offset += resp_frag_len;
341 gas->tx(gas->ctx, response->freq, response->dst, resp, wait_time);
350 struct gas_server_response *response;
352 dl_list_for_each(response, &gas->responses, struct gas_server_response,
354 if (response->dialog_token != dialog_token ||
355 !ether_addr_equal(sa, response->dst))
357 gas_server_handle_rx_comeback_req(response);
361 wpa_printf(MSG_DEBUG, "GAS: No pending GAS response for " MACSTR
417 static void gas_server_handle_tx_status(struct gas_server_response *response,
420 if (ack && response->resp &&
421 response->offset < wpabuf_len(response->resp)) {
427 if (ack && !response->resp && response->comeback_delay) {
429 "GAS: Waiting for response - keep pending entry");
438 "GAS: Last fragment of the response sent out - drop pending entry");
440 response->handler->status_cb(response->handler->ctx,
441 response->resp, ack);
442 response->resp = NULL;
443 dl_list_del(&response->list);
444 gas_server_free_response(response);
453 struct gas_server_response *response;
470 dl_list_for_each(response, &gas->responses, struct gas_server_response,
472 if (response->dialog_token != dialog_token ||
473 !ether_addr_equal(dst, response->dst))
475 gas_server_handle_tx_status(response, ack);
479 wpa_printf(MSG_DEBUG, "GAS: No pending response matches TX status");
486 struct gas_server_response *tmp, *response = NULL;
491 response = tmp;
496 if (!response || response->resp)
499 if (!response->initial_resp_sent) {
500 wpa_printf(MSG_DEBUG, "GAS: Send the delayed initial response");
501 gas_server_send_resp(gas, response, resp, 0);
505 response->resp = resp;
513 struct gas_server_response *tmp, *response = NULL;
518 response = tmp;
523 if (!response || response->initial_resp_sent)
527 "GAS: Send the delayed initial response with comeback delay %u",
529 gas_server_send_resp(gas, response, NULL, comeback_delay);
572 struct gas_server_response *response, *tmp_r;
583 dl_list_for_each_safe(response, tmp_r, &gas->responses,
585 dl_list_del(&response->list);
586 gas_server_free_response(response);