@@ -3236,8 +3236,8 @@ static int typestr_type_is_default(const char *typestr)
32363236/* Get the sbuf of a socket matching the given type string from
32373237 * the pool. Returns NULL if none is available or the sbuf on
32383238 * success. */
3239- static COMDB2BUF * cdb2_socket_pool_get (cdb2_hndl_tp * hndl , const char * typestr , int dbnum , int * port ,
3240- int * was_from_local_cache )
3239+ static COMDB2BUF * cdb2_socket_pool_get_int (cdb2_hndl_tp * hndl , const char * typestr , int dbnum , int * port ,
3240+ int * was_from_local_cache )
32413241{
32423242 COMDB2BUF * sb = NULL ;
32433243
@@ -3295,6 +3295,31 @@ static COMDB2BUF *cdb2_socket_pool_get(cdb2_hndl_tp *hndl, const char *typestr,
32953295 return sb ;
32963296}
32973297
3298+ static COMDB2BUF * cdb2_socket_pool_get (cdb2_hndl_tp * hndl , const char * typestr , int dbnum , int * port ,
3299+ int * was_from_local_cache )
3300+ {
3301+ void * callbackrc ;
3302+ int overwrite_rc = 0 ;
3303+ cdb2_event * e = NULL ;
3304+ COMDB2BUF * sb = NULL ;
3305+
3306+ while ((e = cdb2_next_callback (hndl , CDB2_BEFORE_SOCKPOOL , e )) != NULL ) {
3307+ callbackrc = cdb2_invoke_callback (hndl , e , 0 );
3308+ PROCESS_EVENT_CTRL_BEFORE (hndl , e , overwrite_rc , callbackrc , overwrite_rc );
3309+ }
3310+ if (overwrite_rc )
3311+ goto after_callback ;
3312+
3313+ sb = cdb2_socket_pool_get_int (hndl , typestr , dbnum , port , was_from_local_cache );
3314+
3315+ after_callback :
3316+ while ((e = cdb2_next_callback (hndl , CDB2_AFTER_SOCKPOOL , e )) != NULL ) {
3317+ callbackrc = cdb2_invoke_callback (hndl , e , 1 , CDB2_RETURN_VALUE , (intptr_t )sb );
3318+ PROCESS_EVENT_CTRL_AFTER (hndl , e , overwrite_rc , callbackrc );
3319+ }
3320+ return sb ;
3321+ }
3322+
32983323#ifndef CDB2API_SERVER
32993324static
33003325#endif
0 commit comments