Changeset 662 for trunk/c2s/c2s.c
- Timestamp:
- 10/08/08 12:44:06 (5 months ago)
- Files:
-
- 1 modified
-
trunk/c2s/c2s.c (modified) (19 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/c2s/c2s.c
r639 r662 91 91 92 92 sx_kill(s); 93 93 94 94 return -1; 95 95 } … … 117 117 "Connection: close\r\n\r\n"; 118 118 char *answer; 119 119 120 120 len = strlen(sess->c2s->http_forward) + strlen(http); 121 121 answer = malloc(len * sizeof(char)); 122 122 sprintf (answer, http, sess->c2s->http_forward); 123 123 124 124 log_write(sess->c2s->log, LOG_NOTICE, "[%d] bouncing HTTP request to %s", sess->fd->fd, sess->c2s->http_forward); 125 125 126 126 /* send HTTP answer */ 127 127 len = send(sess->fd->fd, answer, len-1, 0); 128 128 129 129 free(answer); 130 130 131 131 /* close connection */ 132 132 sx_kill(s); … … 150 150 if(MIO_WOULDBLOCK) 151 151 return 0; 152 152 153 153 if(s->state >= state_OPEN && sess->resources != NULL) 154 154 log_write(sess->c2s->log, LOG_NOTICE, "[%d] [%s] write error: %s (%d)", sess->fd->fd, jid_user(sess->resources->jid), MIO_STRERROR(MIO_ERROR), MIO_ERROR); 155 155 else 156 156 log_write(sess->c2s->log, LOG_NOTICE, "[%d] [%s. port=%d] write error: %s (%d)", sess->fd->fd, sess->ip, sess->port, MIO_STRERROR(MIO_ERROR), MIO_ERROR); 157 157 158 158 sx_kill(s); 159 159 160 160 return -1; 161 161 … … 168 168 169 169 break; 170 170 171 171 case event_STREAM: 172 172 … … 272 272 log_debug(ZONE, "invalid jid data"); 273 273 sx_nad_write(sess->s, stanza_error(nad, 0, stanza_err_BAD_REQUEST)); 274 274 275 275 return 0; 276 276 } … … 344 344 log_debug(ZONE, "no/empty resource given to unbind"); 345 345 sx_nad_write(sess->s, stanza_error(nad, 0, stanza_err_BAD_REQUEST)); 346 346 347 347 return 0; 348 348 } … … 352 352 log_debug(ZONE, "cannot resourceprep"); 353 353 sx_nad_write(sess->s, stanza_error(nad, 0, stanza_err_BAD_REQUEST)); 354 354 355 355 return 0; 356 356 } … … 364 364 log_debug(ZONE, "resource /%s not bound", resource_buf); 365 365 sx_nad_write(sess->s, stanza_error(nad, 0, stanza_err_ITEM_NOT_FOUND)); 366 366 367 367 return 0; 368 368 } … … 446 446 log_debug(ZONE, "packet without 'from' on multiple resource stream"); 447 447 } 448 448 449 449 sx_nad_write(sess->s, stanza_error(nad, 0, stanza_err_UNKNOWN_SENDER)); 450 450 451 451 return 0; 452 452 } … … 458 458 459 459 break; 460 460 461 461 case event_OPEN: 462 462 … … 593 593 if(c2s->stanza_rate_total != 0) 594 594 sess->stanza_rate = rate_new(c2s->stanza_rate_total, c2s->stanza_rate_seconds, c2s->stanza_rate_wait); 595 596 /* give IP to SX */ 597 sess->s->ip = sess->ip; 595 598 596 599 /* find out which port this is */ … … 667 670 } 668 671 } while(xhash_iter_next(c2s->sessions)); 669 672 670 673 xhash_zap(c2s->sm_avail, from); 671 674 } … … 708 711 709 712 sx_kill(s); 710 713 711 714 return -1; 712 715 } … … 738 741 739 742 log_write(c2s->log, LOG_NOTICE, "[%d] [router] write error: %s (%d)", c2s->fd->fd, MIO_STRERROR(MIO_ERROR), MIO_ERROR); 740 743 741 744 sx_kill(s); 742 745 743 746 return -1; 744 747 … … 847 850 } else 848 851 c2s->server_fd = NULL; 849 852 850 853 #ifdef HAVE_SSL 851 854 if(c2s->local_ssl_port != 0 && c2s->local_pemfile != NULL) { … … 869 872 exit(1); 870 873 } 871 874 872 875 /* we're online */ 873 876 c2s->online = c2s->started = 1; … … 1051 1054 if(sess->bound < 1){ 1052 1055 sess->active = 0; 1053 1056 1054 1057 /* return the unbind result to the client */ 1055 1058 if(sess->result != NULL) { … … 1060 1063 if(replaced) 1061 1064 sx_error(sess->s, stream_err_CONFLICT, NULL); 1062 1065 1063 1066 /* close them */ 1064 1067 sx_close(sess->s); 1065 1068 1066 1069 nad_free(nad); 1067 1070 return 0; … … 1138 1141 ires->next = bres->next; 1139 1142 } 1140 1143 1141 1144 jid_free(bres->jid); 1142 1145 free(bres);
