@@ -2482,6 +2482,9 @@ static char *BackendClientHostnameBuffer = NULL;
2482
2482
static char * BackendAppnameBuffer = NULL ;
2483
2483
static char * BackendActivityBuffer = NULL ;
2484
2484
static Size BackendActivityBufferSize = 0 ;
2485
+ #ifdef USE_SSL
2486
+ static PgBackendSSLStatus * BackendSslStatusBuffer = NULL ;
2487
+ #endif
2485
2488
2486
2489
2487
2490
/*
@@ -2563,6 +2566,26 @@ CreateSharedBackendStatus(void)
2563
2566
}
2564
2567
}
2565
2568
2569
+ #ifdef USE_SSL
2570
+ /* Create or attach to the shared SSL status buffer */
2571
+ size = mul_size (sizeof (PgBackendSSLStatus ), MaxBackends );
2572
+ BackendSslStatusBuffer = (PgBackendSSLStatus * )
2573
+ ShmemInitStruct ("Backend SSL Status Buffer" , size , & found );
2574
+
2575
+ if (!found )
2576
+ {
2577
+ MemSet (BackendSslStatusBuffer , 0 , size );
2578
+
2579
+ /* Initialize st_sslstatus pointers. */
2580
+ buffer = (char * ) BackendSslStatusBuffer ;
2581
+ for (i = 0 ; i < MaxBackends ; i ++ )
2582
+ {
2583
+ BackendStatusArray [i ].st_sslstatus = (PgBackendSSLStatus * )buffer ;
2584
+ buffer += sizeof (PgBackendSSLStatus );
2585
+ }
2586
+ }
2587
+ #endif
2588
+
2566
2589
/* Create or attach to the shared activity buffer */
2567
2590
BackendActivityBufferSize = mul_size (pgstat_track_activity_query_size ,
2568
2591
MaxBackends );
@@ -2672,6 +2695,23 @@ pgstat_bestart(void)
2672
2695
NAMEDATALEN );
2673
2696
else
2674
2697
beentry -> st_clienthostname [0 ] = '\0' ;
2698
+ #ifdef USE_SSL
2699
+ if (MyProcPort && MyProcPort -> ssl != NULL )
2700
+ {
2701
+ beentry -> st_ssl = true;
2702
+ beentry -> st_sslstatus -> ssl_bits = be_tls_get_cipher_bits (MyProcPort );
2703
+ beentry -> st_sslstatus -> ssl_compression = be_tls_get_compression (MyProcPort );
2704
+ be_tls_get_version (MyProcPort , beentry -> st_sslstatus -> ssl_version , NAMEDATALEN );
2705
+ be_tls_get_cipher (MyProcPort , beentry -> st_sslstatus -> ssl_cipher , NAMEDATALEN );
2706
+ be_tls_get_peerdn_name (MyProcPort , beentry -> st_sslstatus -> ssl_clientdn , NAMEDATALEN );
2707
+ }
2708
+ else
2709
+ {
2710
+ beentry -> st_ssl = false;
2711
+ }
2712
+ #else
2713
+ beentry -> st_ssl = false;
2714
+ #endif
2675
2715
beentry -> st_waiting = false;
2676
2716
beentry -> st_state = STATE_UNDEFINED ;
2677
2717
beentry -> st_appname [0 ] = '\0' ;
@@ -2892,6 +2932,9 @@ pgstat_read_current_status(void)
2892
2932
volatile PgBackendStatus * beentry ;
2893
2933
LocalPgBackendStatus * localtable ;
2894
2934
LocalPgBackendStatus * localentry ;
2935
+ #ifdef USE_SSL
2936
+ PgBackendSSLStatus * localsslstatus ;
2937
+ #endif
2895
2938
char * localappname ,
2896
2939
* localactivity ;
2897
2940
int i ;
@@ -2908,6 +2951,12 @@ pgstat_read_current_status(void)
2908
2951
localappname = (char * )
2909
2952
MemoryContextAlloc (pgStatLocalContext ,
2910
2953
NAMEDATALEN * MaxBackends );
2954
+ #ifdef USE_SSL
2955
+ localsslstatus = (PgBackendSSLStatus * )
2956
+ MemoryContextAlloc (pgStatLocalContext ,
2957
+ sizeof (PgBackendSSLStatus ) * MaxBackends );
2958
+ #endif
2959
+
2911
2960
localactivity = (char * )
2912
2961
MemoryContextAlloc (pgStatLocalContext ,
2913
2962
pgstat_track_activity_query_size * MaxBackends );
@@ -2944,6 +2993,14 @@ pgstat_read_current_status(void)
2944
2993
localentry -> backendStatus .st_appname = localappname ;
2945
2994
strcpy (localactivity , (char * ) beentry -> st_activity );
2946
2995
localentry -> backendStatus .st_activity = localactivity ;
2996
+ localentry -> backendStatus .st_ssl = beentry -> st_ssl ;
2997
+ #ifdef USE_SSL
2998
+ if (beentry -> st_ssl )
2999
+ {
3000
+ memcpy (localsslstatus , beentry -> st_sslstatus , sizeof (PgBackendSSLStatus ));
3001
+ localentry -> backendStatus .st_sslstatus = localsslstatus ;
3002
+ }
3003
+ #endif
2947
3004
}
2948
3005
2949
3006
pgstat_save_changecount_after (beentry , after_changecount );
@@ -2966,6 +3023,9 @@ pgstat_read_current_status(void)
2966
3023
localentry ++ ;
2967
3024
localappname += NAMEDATALEN ;
2968
3025
localactivity += pgstat_track_activity_query_size ;
3026
+ #ifdef USE_SSL
3027
+ localsslstatus += sizeof (PgBackendSSLStatus );
3028
+ #endif
2969
3029
localNumBackends ++ ;
2970
3030
}
2971
3031
}
0 commit comments