X-Git-Url: https://hackdaworld.org/gitweb/?p=physik%2Fnlsop.git;a=blobdiff_plain;f=nlsop_server.c;h=9adc6f83025fdf040bb7ff30cd83805ef7cbd934;hp=5a627db66a5aef274d34a71e555509fd0de995ca;hb=f9579e76a73b3645f1ab524f04aaca4dff11f039;hpb=064393d5ac0802dc79efa35c5443130708aad511 diff --git a/nlsop_server.c b/nlsop_server.c index 5a627db..9adc6f8 100644 --- a/nlsop_server.c +++ b/nlsop_server.c @@ -228,19 +228,26 @@ int send_status(void) { data=GUI_INFO; - count=list_count(&(priv.job)); - - printf("sending job info\n"); - network_send_chan(&(priv.net),gi,&data,sizeof(unsigned char)); - network_send_chan(&(priv.net),gi,(unsigned char *)&count,sizeof(int)); + printf("sending job + client list ...\n"); + count=list_count(&(priv.job)); + network_send_chan(&(priv.net),gi,(unsigned char *)&count,sizeof(int)); list_reset(&(priv.job)); for(i=0;idata,sizeof(t_job)); list_next(&(priv.job)); } + count=list_count(&(priv.client)); + network_send_chan(&(priv.net),gi,(unsigned char *)&count,sizeof(int)); + list_reset(&(priv.client)); + for(i=0;idata, + sizeof(t_client)); + list_next(&(priv.client)); + } + return 1; } @@ -439,6 +446,8 @@ int parse_incoming(t_event *event,void *allineed) { void destroy_it(int signum) { + t_job *j; + printf("connection to client (ch %d) fucked up!\n",gi); event_math(priv.net.connection[gi].fd,&(priv.event),READ,REMOVE); network_close(&(priv.net),gi); @@ -446,6 +455,13 @@ void destroy_it(int signum) { list_del_current(&(priv.client)); printf("removed client from list\n"); } + if(list_search_data(&(priv.job),&gi,sizeof(int))==L_SUCCESS) { + printf("associated job found. resetting & queueing job.\n"); + j=(t_job *)priv.job.current->data; + j->channel=-1; + j->status=IN_QUEUE; + j->progress=0; + } if(list_search_data(&(priv.gui),&gi,sizeof(int))==L_SUCCESS) { list_del_current(&(priv.gui)); printf("removed gui from list\n");