From e453a7b33ff8b5c9cd514f2506ff6fd86ee1a0a3 Mon Sep 17 00:00:00 2001 From: Andrew Otto Date: Mon, 4 Mar 2019 15:47:01 -0500 Subject: [PATCH] Set api-request log http.request_headers properly $request->getHeader( 'Api-user-agent' ) was returning false, and we can only accept string header values. Bug: T214080 Change-Id: I3de8a455ad7dab9e3a67e24439e95f4968c93243 --- includes/api/ApiMain.php | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/includes/api/ApiMain.php b/includes/api/ApiMain.php index 8255269ad6..fdedc458f9 100644 --- a/includes/api/ApiMain.php +++ b/includes/api/ApiMain.php @@ -1654,16 +1654,22 @@ class ApiMain extends ApiBase { 'http' => [ 'method' => $request->getMethod(), 'client_ip' => $request->getIP(), - 'request_headers' => [ - 'user-agent' => $request->getHeader( 'User-agent' ), - 'api-user-agent' => $request->getHeader( 'Api-user-agent' ) - ], + 'request_headers' => [] ], 'database' => wfWikiID(), 'backend_time_ms' => (int)round( $time * 1000 ), 'params' => [] ]; + // If set, these headers will be logged in http.request_headers. + // A http.request_headers entry should not be set if the header was not provided. + if ( $request->getHeader( 'User-agent' ) ) { + $logCtx['http']['request_headers']['user-agent'] = $request->getHeader( 'User-agent' ); + } + if ( $request->getHeader( 'Api-user-agent' ) ) { + $logCtx['http']['request_headers']['api-user-agent'] = $request->getHeader( 'Api-user-agent' ); + } + $logCtx['meta']['request_id'] = $logCtx['http']['request_headers']['x-request-id'] = WebRequest::getRequestId(); -- 2.20.1