Changes in protocols/jabber/jabber.c [89d736a:4ac647d]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
protocols/jabber/jabber.c
r89d736a r4ac647d 33 33 #include "jabber.h" 34 34 #include "md5.h" 35 #include "base64.h" 35 36 36 37 GSList *jabber_connections; 37 38 38 /* First enty is the default */39 static const int jabber_port_list[] = {40 5222,41 5223,42 5220,43 5221,44 5224,45 5225,46 5226,47 5227,48 5228,49 5229,50 80,51 443,52 053 };54 55 39 static void jabber_init( account_t *acc ) 56 40 { 57 41 set_t *s; 58 char str[16]; 59 60 g_snprintf( str, sizeof( str ), "%d", jabber_port_list[0] ); 61 s = set_add( &acc->set, "port", str, set_eval_int, acc ); 42 43 s = set_add( &acc->set, "port", JABBER_PORT_DEFAULT, set_eval_int, acc ); 62 44 s->flags |= ACC_SET_OFFLINE_ONLY; 63 45 … … 80 62 s = set_add( &acc->set, "xmlconsole", "false", set_eval_bool, acc ); 81 63 s->flags |= ACC_SET_OFFLINE_ONLY; 64 65 s = set_add( &acc->set, "proxy", "<local>;<auto>", NULL, acc ); 82 66 } 83 67 … … 90 74 struct ns_srv_reply *srv = NULL; 91 75 char *connect_to, *s; 92 int i;93 76 94 77 /* For now this is needed in the _connected() handlers if using … … 196 179 imcb_log( ic, "Connecting" ); 197 180 198 for( i = 0; jabber_port_list[i] > 0; i ++ ) 199 if( set_getint( &acc->set, "port" ) == jabber_port_list[i] ) 200 break; 201 202 if( jabber_port_list[i] == 0 ) 203 { 204 imcb_log( ic, "Illegal port number" ); 181 if( set_getint( &acc->set, "port" ) < JABBER_PORT_MIN || 182 set_getint( &acc->set, "port" ) > JABBER_PORT_MAX ) 183 { 184 imcb_log( ic, "Incorrect port number, must be in the %d-%d range", 185 JABBER_PORT_MIN, JABBER_PORT_MAX ); 205 186 imc_logout( ic, FALSE ); 206 187 return; … … 240 221 } 241 222 242 /* This generates an unfinished md5_state_t variable. Every time we generate243 an ID, we finish the state by adding a sequence number and take the hash. */244 223 static void jabber_generate_id_hash( struct jabber_data *jd ) 245 224 { 246 md5_byte_t binbuf[4]; 225 md5_state_t id_hash; 226 md5_byte_t binbuf[16]; 247 227 char *s; 248 228 249 md5_init( & jd->cached_id_prefix);250 md5_append( & jd->cached_id_prefix, (unsigned char *) jd->username, strlen( jd->username ) );251 md5_append( & jd->cached_id_prefix, (unsigned char *) jd->server, strlen( jd->server ) );229 md5_init( &id_hash ); 230 md5_append( &id_hash, (unsigned char *) jd->username, strlen( jd->username ) ); 231 md5_append( &id_hash, (unsigned char *) jd->server, strlen( jd->server ) ); 252 232 s = set_getstr( &jd->ic->acc->set, "resource" ); 253 md5_append( &jd->cached_id_prefix, (unsigned char *) s, strlen( s ) ); 254 random_bytes( binbuf, 4 ); 255 md5_append( &jd->cached_id_prefix, binbuf, 4 ); 233 md5_append( &id_hash, (unsigned char *) s, strlen( s ) ); 234 random_bytes( binbuf, 16 ); 235 md5_append( &id_hash, binbuf, 16 ); 236 md5_finish( &id_hash, binbuf ); 237 238 s = base64_encode( binbuf, 9 ); 239 jd->cached_id_prefix = g_strdup_printf( "%s%s", JABBER_CACHED_ID, s ); 240 g_free( s ); 256 241 } 257 242 … … 260 245 struct jabber_data *jd = ic->proto_data; 261 246 247 while( jd->filetransfers ) 248 imcb_file_canceled( ( ( struct jabber_transfer *) jd->filetransfers->data )->ft, "Logging out" ); 249 250 while( jd->streamhosts ) 251 { 252 jabber_streamhost_t *sh = jd->streamhosts->data; 253 jd->streamhosts = g_slist_remove( jd->streamhosts, sh ); 254 g_free( sh->jid ); 255 g_free( sh->host ); 256 g_free( sh ); 257 } 258 262 259 if( jd->fd >= 0 ) 263 260 jabber_end_stream( ic ); … … 284 281 xt_free( jd->xt ); 285 282 283 g_free( jd->cached_id_prefix ); 286 284 g_free( jd->away_message ); 287 285 g_free( jd->username ); … … 546 544 ret->send_typing = jabber_send_typing; 547 545 ret->handle_cmp = g_strcasecmp; 546 ret->transfer_request = jabber_si_transfer_request; 548 547 549 548 register_protocol( ret );
Note: See TracChangeset
for help on using the changeset viewer.