Changes in / [92ad3d4:d990997]
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
bitlbee.c
r92ad3d4 rd990997 200 200 { 201 201 log_message( LOGLVL_INFO, "Destroying connection with fd %d.", irc->fd ); 202 irc_ abort( irc );202 irc_free( irc ); 203 203 return FALSE; 204 204 } … … 208 208 { 209 209 log_message( LOGLVL_ERROR, "Maximum line length exceeded." ); 210 irc_ abort( irc );210 irc_free( irc ); 211 211 return FALSE; 212 212 } … … 227 227 st = write( irc->fd, irc->sendbuffer, size ); 228 228 229 if( st == 0 || ( st < 0 && !sockerr_again() ) ) 230 { 231 irc_free( irc ); 232 return FALSE; 233 } 234 else if( st < 0 ) /* && sockerr_again() */ 235 { 236 return TRUE; 229 if( st <= 0 ) 230 { 231 if( sockerr_again() ) 232 { 233 return TRUE; 234 } 235 else 236 { 237 irc_free( irc ); 238 return FALSE; 239 } 237 240 } 238 241 … … 241 244 g_free( irc->sendbuffer ); 242 245 irc->sendbuffer = NULL; 246 243 247 irc->w_watch_source_id = 0; 244 245 if( irc->status == USTATUS_SHUTDOWN )246 irc_free( irc );247 248 248 return( FALSE ); 249 249 } -
irc.c
r92ad3d4 rd990997 151 151 } 152 152 153 void irc_abort( irc_t *irc )154 {155 irc->status = USTATUS_SHUTDOWN;156 if( irc->sendbuffer )157 {158 g_source_remove( irc->r_watch_source_id );159 irc->r_watch_source_id = g_timeout_add_full( G_PRIORITY_HIGH, 1000, (GSourceFunc) irc_free, irc, NULL );160 }161 else162 {163 irc_free( irc );164 }165 }166 167 153 static gboolean irc_free_userhash( gpointer key, gpointer value, gpointer data ) 168 154 { … … 173 159 174 160 /* Because we have no garbage collection, this is quite annoying */ 175 void irc_free( irc_t * irc)161 void irc_free(irc_t * irc) 176 162 { 177 163 account_t *account, *accounttmp; … … 510 496 { 511 497 irc_write( irc, "ERROR :%s%s", cmd[1]?"Quit: ":"", cmd[1]?cmd[1]:"Client Quit" ); 512 /* g_io_channel_close( irc->io_channel ); */498 g_io_channel_close( irc->io_channel ); 513 499 return( 0 ); 514 500 } -
irc.h
r92ad3d4 rd990997 44 44 USTATUS_AUTHORIZED, 45 45 USTATUS_LOGGED_IN, 46 USTATUS_IDENTIFIED, 47 USTATUS_SHUTDOWN 46 USTATUS_IDENTIFIED 48 47 } irc_status_t; 49 48 … … 105 104 106 105 irc_t *irc_new( int fd ); 107 void irc_abort( irc_t *irc );108 106 void irc_free( irc_t *irc ); 109 107 -
log.c
r92ad3d4 rd990997 38 38 openlog("bitlbee", LOG_PID, LOG_DAEMON); 39 39 40 logoutput.informational =&log_null;41 logoutput.warning =&log_null;42 logoutput.error =&log_null;40 logoutput.informational=&log_null; 41 logoutput.warning=&log_null; 42 logoutput.error=&log_null; 43 43 #ifdef DEBUG 44 logoutput.debug =&log_null;44 logoutput.debug=&log_null; 45 45 #endif 46 46 … … 51 51 /* I know it's ugly, but it works and I didn't feel like messing with pointer to function pointers */ 52 52 53 if(level ==LOGLVL_INFO) {54 if(output ==LOGOUTPUT_NULL)55 logoutput.informational =&log_null;56 else if(output ==LOGOUTPUT_IRC)57 logoutput.informational =&log_irc;58 else if(output ==LOGOUTPUT_SYSLOG)59 logoutput.informational =&log_syslog;60 else if(output ==LOGOUTPUT_CONSOLE)61 logoutput.informational =&log_console;53 if(level==LOGLVL_INFO) { 54 if(output==LOGOUTPUT_NULL) 55 logoutput.informational=&log_null; 56 else if(output==LOGOUTPUT_IRC) 57 logoutput.informational=&log_irc; 58 else if(output==LOGOUTPUT_SYSLOG) 59 logoutput.informational=&log_syslog; 60 else if(output==LOGOUTPUT_CONSOLE) 61 logoutput.informational=&log_console; 62 62 } 63 else if(level ==LOGLVL_WARNING) {64 if(output ==LOGOUTPUT_NULL)65 logoutput.warning =&log_null;66 else if(output ==LOGOUTPUT_IRC)67 logoutput.warning =&log_irc;68 else if(output ==LOGOUTPUT_SYSLOG)69 logoutput.warning =&log_syslog;70 else if(output ==LOGOUTPUT_CONSOLE)71 logoutput.warning =&log_console;63 else if(level==LOGLVL_WARNING) { 64 if(output==LOGOUTPUT_NULL) 65 logoutput.warning=&log_null; 66 else if(output==LOGOUTPUT_IRC) 67 logoutput.warning=&log_irc; 68 else if(output==LOGOUTPUT_SYSLOG) 69 logoutput.warning=&log_syslog; 70 else if(output==LOGOUTPUT_CONSOLE) 71 logoutput.warning=&log_console; 72 72 } 73 else if(level ==LOGLVL_ERROR) {74 if(output ==LOGOUTPUT_NULL)75 logoutput.error =&log_null;76 else if(output ==LOGOUTPUT_IRC)77 logoutput.error =&log_irc;78 else if(output ==LOGOUTPUT_SYSLOG)79 logoutput.error =&log_syslog;80 else if(output ==LOGOUTPUT_CONSOLE)81 logoutput.error =&log_console;73 else if(level==LOGLVL_ERROR) { 74 if(output==LOGOUTPUT_NULL) 75 logoutput.error=&log_null; 76 else if(output==LOGOUTPUT_IRC) 77 logoutput.error=&log_irc; 78 else if(output==LOGOUTPUT_SYSLOG) 79 logoutput.error=&log_syslog; 80 else if(output==LOGOUTPUT_CONSOLE) 81 logoutput.error=&log_console; 82 82 } 83 83 #ifdef DEBUG 84 else if(level ==LOGLVL_DEBUG) {85 if(output ==LOGOUTPUT_NULL)86 logoutput.debug =&log_null;87 else if(output ==LOGOUTPUT_IRC)88 logoutput.debug =&log_irc;89 else if(output ==LOGOUTPUT_SYSLOG)90 logoutput.debug =&log_syslog;91 else if(output ==LOGOUTPUT_CONSOLE)92 logoutput.debug =&log_console;84 else if(level==LOGLVL_DEBUG) { 85 if(output==LOGOUTPUT_NULL) 86 logoutput.debug=&log_null; 87 else if(output==LOGOUTPUT_IRC) 88 logoutput.debug=&log_irc; 89 else if(output==LOGOUTPUT_SYSLOG) 90 logoutput.debug=&log_syslog; 91 else if(output==LOGOUTPUT_CONSOLE) 92 logoutput.debug=&log_console; 93 93 } 94 94 #endif … … 106 106 va_end(ap); 107 107 108 if(level ==LOGLVL_INFO)108 if(level==LOGLVL_INFO) 109 109 (*(logoutput.informational))(level, msgstring); 110 if(level ==LOGLVL_WARNING)110 if(level==LOGLVL_WARNING) 111 111 (*(logoutput.warning))(level, msgstring); 112 if(level ==LOGLVL_ERROR)112 if(level==LOGLVL_ERROR) 113 113 (*(logoutput.error))(level, msgstring); 114 114 #ifdef DEBUG 115 if(level ==LOGLVL_DEBUG)115 if(level==LOGLVL_DEBUG) 116 116 (*(logoutput.debug))(level, msgstring); 117 117 #endif … … 133 133 134 134 static void log_irc(int level, char *message) { 135 if(level ==LOGLVL_ERROR)135 if(level==LOGLVL_ERROR) 136 136 irc_write_all(1, "ERROR :Error: %s", message); 137 if(level ==LOGLVL_WARNING)137 if(level==LOGLVL_WARNING) 138 138 irc_write_all(0, "ERROR :Warning: %s", message); 139 if(level ==LOGLVL_INFO)139 if(level==LOGLVL_INFO) 140 140 irc_write_all(0, "ERROR :Informational: %s", message); 141 141 #ifdef DEBUG 142 if(level ==LOGLVL_DEBUG)142 if(level==LOGLVL_DEBUG) 143 143 irc_write_all(0, "ERROR :Debug: %s", message); 144 144 #endif … … 148 148 149 149 static void log_syslog(int level, char *message) { 150 if(level ==LOGLVL_ERROR)150 if(level==LOGLVL_ERROR) 151 151 syslog(LOG_ERR, "%s", message); 152 if(level ==LOGLVL_WARNING)152 if(level==LOGLVL_WARNING) 153 153 syslog(LOG_WARNING, "%s", message); 154 if(level ==LOGLVL_INFO)154 if(level==LOGLVL_INFO) 155 155 syslog(LOG_INFO, "%s", message); 156 156 #ifdef DEBUG 157 if(level ==LOGLVL_DEBUG)157 if(level==LOGLVL_DEBUG) 158 158 syslog(LOG_DEBUG, "%s", message); 159 159 #endif … … 162 162 163 163 static void log_console(int level, char *message) { 164 if(level ==LOGLVL_ERROR)164 if(level==LOGLVL_ERROR) 165 165 fprintf(stderr, "Error: %s\n", message); 166 if(level ==LOGLVL_WARNING)166 if(level==LOGLVL_WARNING) 167 167 fprintf(stderr, "Warning: %s\n", message); 168 if(level ==LOGLVL_INFO)168 if(level==LOGLVL_INFO) 169 169 fprintf(stdout, "Informational: %s\n", message); 170 170 #ifdef DEBUG 171 if(level ==LOGLVL_DEBUG)171 if(level==LOGLVL_DEBUG) 172 172 fprintf(stdout, "Debug: %s\n", message); 173 173 #endif
Note: See TracChangeset
for help on using the changeset viewer.