Merge "Set api-request log http.request_headers properly"
authorOttomata <aotto@wikimedia.org>
Mon, 4 Mar 2019 21:41:55 +0000 (21:41 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Mon, 4 Mar 2019 21:41:55 +0000 (21:41 +0000)
1  2 
includes/api/ApiMain.php

diff --combined includes/api/ApiMain.php
@@@ -1592,14 -1592,17 +1592,14 @@@ class ApiMain extends ApiBase 
                        $this->setupExternalResponse( $module, $params );
                }
  
 -              // Execute
                $module->execute();
                Hooks::run( 'APIAfterExecute', [ &$module ] );
  
                $this->reportUnusedParams();
  
                if ( !$this->mInternalMode ) {
 -                      // append Debug information
                        MWDebug::appendDebugInfoToApiResult( $this->getContext(), $this->getResult() );
  
 -                      // Print result data
                        $this->printResult();
                }
        }
                        '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();