/* initiate a report if we previously enabled accounting for this t */ static void replyout_handler(struct cell* t, int type, struct tmcb_params* ps) { if (t->uas.request == 0) { DBG("DBG:acc:replyout_handler: No uas.request, local transaction, skipping\n"); return; } /* acc_onreply is bound to TMCB_REPLY which may be called * from _reply, like when FR hits; we should not miss this * event for missed calls either */ failure_handler(t, type, ps); if (!should_acc_reply(t, ps->code)) return; if (is_acc_on(t->uas.request)) log_reply(t, ps->rpl, ps->code, (time_t)*(ps->param)); }
int wifi_send_command(const char *cmd, char *reply, size_t *reply_len) { int ret; if (ctrl_conn == NULL) { ALOGV("Not connected to wpa_supplicant - \"%s\" command dropped.\n", cmd); return -1; } log_cmd(cmd); ret = wpa_ctrl_request(ctrl_conn, cmd, strlen(cmd), reply, reply_len, NULL); if (ret == -2) { ALOGD("'%s' command timed out.\n", cmd); /* unblocks the monitor receive socket for termination */ TEMP_FAILURE_RETRY(write(exit_sockets[0], "T", 1)); return -2; } else if (ret < 0 || strncmp(reply, "FAIL", 4) == 0) { LOGI("REPLY: FAIL\n"); return -1; } if (strncmp(cmd, "PING", 4) == 0) { reply[*reply_len] = '\0'; } log_reply(reply, reply_len); return 0; }