Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.83 KB | None | 0 0
  1. void* TCP_await_JOIN(void* data) {
  2. PDU_PJOIN *pjoin = NULL;
  3. packet* pkt;
  4. CLIENT *c_stru = (CLIENT*)data;
  5. pkt = rcv_TCP_msg(*c_stru->socket);
  6. if(pkt==NULL || check_datatype(pkt->data)!=JOIN) {
  7. printf("SERVER: Tog bort socket %d (await client)\n",*c_stru->socket);
  8. return NULL;
  9. } else {
  10. PDU_JOIN *join = (PDU_JOIN*)pkt->data;
  11. deserialize(join);
  12. if(join->ID_length>0 && join->ID!=NULL) {
  13. queue_enqueue(c_stru->frwrd_queue, c_stru);
  14. global_clientnum++;
  15.  
  16. c_stru->info = join;
  17. int len=0;
  18. char* partic_str = create_PARTICIPANTS_STR(c_stru->frwrd_queue,&len);
  19. if(partic_str!=NULL) {
  20. PDU_PARTICIPANTS *plist = create_PDU_PARTICIPANTS(global_clientnum,len,partic_str);
  21. //Calculating len of participants including wordpad
  22. if(len%WORD == 0) len+=WORD;
  23. else len+= WORD-(len%WORD);
  24. send_TCP_msg(*c_stru->socket,plist,(HEADER+len));
  25. }
  26. free(partic_str);
  27. pjoin = create_PDU_PJOIN((unsigned)time(NULL),join->ID);
  28. serialize(pjoin);
  29. }
  30. }
  31. return pjoin;
  32. }
  33.  
  34.  
  35. char* create_PARTICIPANTS_STR(queue* que, int *idlen) {
  36. char* str;
  37. char buf[BUFSIZE];
  38. int len;
  39. CLIENT* stop = NULL;
  40. queue* q = que;
  41. if(!queue_isEmpty(q)) {
  42. stop = queue_front(q);
  43. strcpy(buf,stop->info->ID);
  44. len=stop->info->ID_length + 1;
  45. queue_dequeue(q);
  46. queue_enqueue(q,stop);
  47. while(queue_front(q)!=stop) {
  48. CLIENT* val = queue_front(q);
  49. int i;
  50. for(i=0;i<val->info->ID_length;i++){
  51. buf[len+i] = val->info->ID[i];
  52. }
  53. //strncat(buf+len,val->info->ID,val->info->ID_length);
  54. len+=val->info->ID_length+1;
  55. queue_dequeue(q);
  56. queue_enqueue(q,val);
  57. }
  58. str=malloc(len);
  59. memcpy(str,buf,len);
  60. *idlen=len;
  61. return str;
  62. }
  63. return NULL;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement