Unified · Split
| @@ -343,7 +343,11 @@ registry(void) · 342 unmodified lines | ||
| 343 | 343 | if((a = srv(chatsrv)) != NULL){ |
| 344 | 344 | a->c.r = ctxchatR; |
| 345 | 345 | c9version(&a->c, &tag, Msize); |
| 346 | − wrsend(a); | |
| 346 | + if(wrsend(a) != 0){ | |
| 347 | + free(a); | |
| 348 | + a = NULL; | |
| 349 | + continue; | |
| 350 | + } | |
| 347 | 351 | return a; |
| 348 | 352 | } |
| 349 | 353 | // }else{ |
| @@ -356,9 +360,13 @@ registry(void) · 6 unmodified lines | ||
| 356 | 360 | return NULL; |
| 357 | 361 | a->c.r = ctxregistryR; |
| 358 | 362 | c9version(&a->c, &tag, Msize); |
| 359 | − wrsend(a); | |
| 360 | − while(c9proc(&a->c) == 0 && a->c.r == ctxregistryR) | |
| 361 | − wrsend(a); | |
| 363 | + do{ | |
| 364 | + if(wrsend(a) != 0){ | |
| 365 | + free(a); | |
| 366 | + a = NULL; | |
| 367 | + break; | |
| 368 | + } | |
| 369 | + }while(c9proc(&a->c) == 0 && a->c.r == ctxregistryR); | |
| 362 | 370 | |
| 363 | 371 | return a; |
| 364 | 372 | } |
| @@ -474,7 +482,7 @@ main(int argc, char **argv) · 109 unmodified lines | ||
| 474 | 482 | for(;;){ |
| 475 | 483 | if((a = registry()) == NULL) |
| 476 | 484 | return 1; |
| 477 | − while (chatrw(a) == 0 && wrsend(a) == 0); | |
| 485 | + while(chatrw(a) == 0 && wrsend(a) == 0); | |
| 478 | 486 | if(a->flags & (Disconnected|Error)){ |
| 479 | 487 | a->flags &= ~(Disconnected|Error); |
| 480 | 488 | skipuntil = chatoff; |