@@ -682,25 +682,67 @@ keep_control_alive()
682
682
set_ticker_ping_timer (main_ctl -> ticker_ping );
683
683
}
684
684
685
- static void
686
- start_base_connect ()
685
+ static int init_server_connection (struct bufferevent * * bev_out ,
686
+ struct event_base * base ,
687
+ const char * server_addr ,
688
+ int server_port )
689
+ {
690
+ if (!bev_out || !base || !server_addr ) {
691
+ debug (LOG_ERR , "Invalid parameters for server connection" );
692
+ return -1 ;
693
+ }
694
+
695
+ // Free existing connection if any
696
+ if (* bev_out ) {
697
+ bufferevent_free (* bev_out );
698
+ * bev_out = NULL ;
699
+ }
700
+
701
+ // Create new connection
702
+ * bev_out = connect_server (base , server_addr , server_port );
703
+ if (!* bev_out ) {
704
+ debug (LOG_ERR , "Failed to connect to server [%s:%d]: [%d: %s]" ,
705
+ server_addr , server_port , errno , strerror (errno ));
706
+ return -1 ;
707
+ }
708
+
709
+ debug (LOG_INFO , "Connecting to server [%s:%d]..." , server_addr , server_port );
710
+ return 0 ;
711
+ }
712
+
713
+ static int setup_server_callbacks (struct bufferevent * bev )
714
+ {
715
+ if (!bev ) {
716
+ debug (LOG_ERR , "Invalid bufferevent for callback setup" );
717
+ return -1 ;
718
+ }
719
+
720
+ bufferevent_enable (bev , EV_WRITE |EV_READ );
721
+ bufferevent_setcb (bev , recv_cb , NULL , connect_event_cb , NULL );
722
+ return 0 ;
723
+ }
724
+
725
+ static void start_base_connect ()
687
726
{
688
727
struct common_conf * c_conf = get_common_config ();
689
- if (main_ctl -> connect_bev )
690
- bufferevent_free (main_ctl -> connect_bev );
728
+ if (!c_conf ) {
729
+ debug (LOG_ERR , "Failed to get common config" );
730
+ exit (1 );
731
+ }
691
732
692
- main_ctl -> connect_bev = connect_server (main_ctl -> connect_base ,
693
- c_conf -> server_addr ,
694
- c_conf -> server_port );
695
- if ( ! main_ctl -> connect_bev ) {
696
- debug (LOG_ERR , "error: connect server [%s:%d] failed: [%d: %s]" ,
697
- c_conf -> server_addr , c_conf -> server_port , errno , strerror (errno ));
698
- exit (0 );
733
+ // Initialize server connection
734
+ if (init_server_connection (& main_ctl -> connect_bev ,
735
+ main_ctl -> connect_base ,
736
+ c_conf -> server_addr ,
737
+ c_conf -> server_port ) != 0 ) {
738
+ exit (1 );
699
739
}
700
740
701
- debug (LOG_INFO , "connect server [%s:%d]..." , c_conf -> server_addr , c_conf -> server_port );
702
- bufferevent_enable (main_ctl -> connect_bev , EV_WRITE |EV_READ );
703
- bufferevent_setcb (main_ctl -> connect_bev , recv_cb , NULL , connect_event_cb , NULL );
741
+ // Setup callbacks for the connection
742
+ if (setup_server_callbacks (main_ctl -> connect_bev ) != 0 ) {
743
+ bufferevent_free (main_ctl -> connect_bev );
744
+ exit (1 );
745
+ }
704
746
}
705
747
706
748
static int prepare_login_message (char * * msg_out , int * len_out ) {
0 commit comments