Lines Matching defs:request

213                                                const FaultLoggerdRequest *requestConst, FaultLoggerdRequest *request)
221 HandlePrintTHilogClientRequest(connectionFd, request);
222 HandlePermissionRequest(connectionFd, request);
223 HandleSdkDumpRequest(connectionFd, request);
224 HandleExceptionRequest(connectionFd, request);
234 DFXLOGE("%{public}s :: Read null from request socket", FAULTLOGGERD_TAG.c_str());
242 void FaultLoggerDaemon::HandleRequestByClientType(int32_t connectionFd, FaultLoggerdRequest* request)
244 switch (request->clientType) {
246 HandleDefaultClientRequest(connectionFd, request);
249 HandleLogFileDesClientRequest(connectionFd, request);
252 HandlePrintTHilogClientRequest(connectionFd, request);
255 HandlePermissionRequest(connectionFd, request);
258 HandleSdkDumpRequest(connectionFd, request);
261 HandlePipeFdClientRequest(connectionFd, request);
264 HandleExceptionRequest(connectionFd, request);
267 DFXLOGE("%{public}s :: unknown clientType(%{public}d).\n", FAULTLOGGERD_TAG.c_str(), request->clientType);
289 auto request = reinterpret_cast<FaultLoggerdRequest *>(buf.data());
290 if (!CheckRequestCredential(connectionFd, request)) {
293 DFXLOGD("%{public}s :: clientType(%{public}d).", FAULTLOGGERD_TAG.c_str(), request->clientType);
294 HandleRequestByClientType(connectionFd, request);
316 void FaultLoggerDaemon::HandleDefaultClientRequest(int32_t connectionFd, const FaultLoggerdRequest * request)
319 int fd = CreateFileForRequest(request->type, request->pid, request->tid, request->time);
325 RecordFileCreation(request->type, request->pid);
331 void FaultLoggerDaemon::HandleLogFileDesClientRequest(int32_t connectionFd, const FaultLoggerdRequest * request)
333 int fd = CreateFileForRequest(request->type, request->pid, request->tid, request->time);
344 void FaultLoggerDaemon::HandleExceptionRequest(int32_t connectionFd, FaultLoggerdRequest * request)
362 void FaultLoggerDaemon::HandleReadBuf(int& fd, int32_t connectionFd, FaultLoggerdRequest* request,
365 FaultLoggerCheckPermissionResp resSecurityCheck = SecurityCheck(connectionFd, request);
381 void FaultLoggerDaemon::HandleReadRes(int& fd, int32_t connectionFd, FaultLoggerdRequest* request,
384 FaultLoggerCheckPermissionResp resSecurityCheck = SecurityCheck(connectionFd, request);
400 void FaultLoggerDaemon::HandleDelete(FaultLoggerdRequest* request)
402 faultLoggerPipeMap_->Del(request->pid);
405 void FaultLoggerDaemon::HandleJsonReadBuf(int& fd, int32_t connectionFd, FaultLoggerdRequest* request,
408 FaultLoggerCheckPermissionResp resSecurityCheck = SecurityCheck(connectionFd, request);
424 void FaultLoggerDaemon::HandleJsonReadRes(int& fd, int32_t connectionFd, FaultLoggerdRequest* request,
427 FaultLoggerCheckPermissionResp resSecurityCheck = SecurityCheck(connectionFd, request);
443 void FaultLoggerDaemon::HandleRequestByPipeType(int& fd, int32_t connectionFd, FaultLoggerdRequest* request,
446 switch (request->pipeType) {
448 HandleReadBuf(fd, connectionFd, request, faultLoggerPipe);
456 HandleReadRes(fd, connectionFd, request, faultLoggerPipe);
464 HandleDelete(request);
468 HandleJsonReadBuf(fd, connectionFd, request, faultLoggerPipe);
476 HandleJsonReadRes(fd, connectionFd, request, faultLoggerPipe);
484 DFXLOGE("%{public}s :: unknown pipeType(%{public}d).", FAULTLOGGERD_TAG.c_str(), request->pipeType);
489 void FaultLoggerDaemon::HandlePipeFdClientRequest(int32_t connectionFd, FaultLoggerdRequest * request)
493 request->pid, request->pipeType);
495 FaultLoggerPipe2* faultLoggerPipe = faultLoggerPipeMap_->Get(request->pid);
497 DFXLOGE("%{public}s :: cannot find pipe fd for pid(%{public}d).", FAULTLOGGERD_TAG.c_str(), request->pid);
500 HandleRequestByPipeType(fd, connectionFd, request, faultLoggerPipe);
503 FAULTLOGGERD_TAG.c_str(), request->pipeType);
509 void FaultLoggerDaemon::HandlePrintTHilogClientRequest(int32_t const connectionFd, FaultLoggerdRequest * request)
522 DFXLOGE("%{public}s :: HandlePrintTHilogClientRequest :: Read null from request socket",
529 FaultLoggerCheckPermissionResp FaultLoggerDaemon::SecurityCheck(int32_t connectionFd, FaultLoggerdRequest * request)
553 request->uid = rcred.uid;
554 request->callerPid = static_cast<int32_t>(rcred.pid);
566 bool res = CheckCallerUID(request->uid);
575 void FaultLoggerDaemon::HandlePermissionRequest(int32_t connectionFd, FaultLoggerdRequest * request)
577 FaultLoggerCheckPermissionResp resSecurityCheck = SecurityCheck(connectionFd, request);
586 void FaultLoggerDaemon::HandleSdkDumpRequest(int32_t connectionFd, FaultLoggerdRequest * request)
589 DFXLOGI("Receive dump request for pid:%{public}d tid:%{public}d.", request->pid, request->tid);
591 FaultLoggerCheckPermissionResp resSecurityCheck = SecurityCheck(connectionFd, request);
620 if ((request->pid <= 0) || (FaultLoggerCheckPermissionResp::CHECK_PERMISSION_REJECT == resSecurityCheck)) {
622 FAULTLOGGERD_TAG.c_str(), request->pid, (int)resSecurityCheck);
626 DFXLOGI("Sdk dump pid(%{public}d) request pass permission verification.", request->pid);
627 if (IsCrashed(request->pid)) {
630 FAULTLOGGERD_TAG.c_str(), request->pid);
633 if (faultLoggerPipeMap_->Check(request->pid, request->time)) {
635 DFXLOGE("%{public}s :: pid(%{public}d) is dumping, break.\n", FAULTLOGGERD_TAG.c_str(), request->pid);
638 faultLoggerPipeMap_->Set(request->pid, request->time, request->isJson);
646 si.si_value.sival_int = request->tid;
647 if (request->tid == 0 && sizeof(void *) == 8) { // 8 : platform 64
648 si.si_value.sival_ptr = reinterpret_cast<void *>(request->endTime | (1ULL << 63)); // 63 : platform 64
650 si.si_code = request->sigCode;
651 si.si_pid = request->callerPid;
652 si.si_uid = static_cast<uid_t>(request->callerTid);
660 if (syscall(SYS_rt_sigqueueinfo, request->pid, si.si_signo, &si) != 0) {
705 DFXLOGE("Unsupported request type(%{public}d)", type);
821 bool FaultLoggerDaemon::CheckRequestCredential(int32_t connectionFd, FaultLoggerdRequest* request)
823 if (request == nullptr) {
851 bool isCredentialMatched = (creds.pid == request->pid);
852 if (request->clientType == (int32_t)REPORT_EXCEPTION_CLIENT) {
853 isCredentialMatched = (creds.uid == request->uid); /* check uid when report exception */
856 DFXLOGW("Failed to check request credential request:%{public}d:" \
858 request->pid, request->uid, creds.pid, creds.uid, it->second, crashSocketFd_);
956 std::string GetElfName(FaultLoggerdStatsRequest* request)
958 if (request == nullptr || strlen(request->callerElf) > NAME_BUF_LEN) {
962 std::string ss = StringPrintf("%s(%p)", request->callerElf, reinterpret_cast<void *>(request->offset));
966 void FaultLoggerDaemon::HandleDumpStats(int32_t connectionFd, FaultLoggerdStatsRequest* request)
972 if (stats_[index].pid == request->pid) {
979 if (request->type == PROCESS_DUMP && !hasRecord) {
980 stats.pid = request->pid;
981 stats.signalTime = request->signalTime;
982 stats.processdumpStartTime = request->processdumpStartTime;
983 stats.processdumpFinishTime = request->processdumpFinishTime;
984 stats.targetProcessName = request->targetProcess;
986 } else if (request->type == DUMP_CATCHER && hasRecord) {
987 stats_[index].requestTime = request->requestTime;
988 stats_[index].dumpCatcherFinishTime = request->dumpCatcherFinishTime;
989 stats_[index].callerElfName = GetElfName(request);
990 stats_[index].callerProcessName = request->callerProcess;
991 stats_[index].result = request->result;
992 stats_[index].summary = request->summary;
995 } else if (request->type == DUMP_CATCHER) {
996 stats.pid = request->pid;
997 stats.requestTime = request->requestTime;
998 stats.dumpCatcherFinishTime = request->dumpCatcherFinishTime;
999 stats.callerElfName = GetElfName(request);
1000 stats.result = request->result;
1001 stats.callerProcessName = request->callerProcess;
1002 stats.summary = request->summary;
1003 stats.targetProcessName = request->targetProcess;