main () {
...
char* composed;
trataPut (received, composed);
send(sockid, composed, sizeof(char), xbytes);
/*
* trataPut
* Trata um pedido de PUT, no lado do servidor.
* @param 'received' Buffer que contem, integralmente, a mensagem de pedido recebida.
* @param 'composed' Buffer (nao alocado) que ira conter a mensagem de resposta ao pedido.
*/
void trataPut (char* received, char* composed)
{
short type = ACKOK;
char* buffer;
char* data = memchr(msg_getDATA(received), (unsigned char)'\0',msg_getLENGTH(received))+1;
char* filename = &(msg_getDATA(received))+4;
int filelength = msg_getLENGTH(received) - strlen(filename);
write_file(filename,data,filelength);
compose_msg(buffer,composed,type,0);
}
/*
* compose_msg
* Compoe uma mensagem para enviar.
* @param 'data', Buffer com o conteudo que ira ser colocado no campo DATA da mensagem
* @param 'message' Buffer nao inicializado que ira conter a mensagem.
* @param 'type' Tipo da mensagem
* @param 'datalength' Tamanho do 'databuffer'
* NOTA: isto esta do projecto antigo... que nao funciona la muito bem. PODE ESTAR MAL. hellifiknow.
*/
int compose_msg(char* data, char* message, short type, int bufferlength);