void ILibMiniWebServerSend(void *ReaderModule, struct packetheader *packet)
{
	struct ILibMWSHTTPReaderObject *module = (struct ILibMWSHTTPReaderObject*)ReaderModule;
	char* buffer;
	int bufferlength = ILibGetRawPacket(packet,&buffer);
	
	send(module->ClientSocket,buffer,bufferlength,0);
	
	FREE(buffer);
}
int ILibWebServer_StreamHeader(struct ILibWebServer_Session *session, struct packetheader *header)
{
	struct packetheader *hdr = ILibWebClient_GetHeaderFromDataObject(session->Reserved3);
	struct packetheader_field_node *n = header->FirstField;
	char *buffer;
	int bufferLength;
	int RetVal;
	while(n!=NULL)
	{
		if(n->FieldLength==14 && strncasecmp(n->Field,"Content-Length",14)==0)
		{
			break;
		}
		n = n->NextField;
	}

	if(!(hdr->VersionLength==3 && memcmp(hdr->Version,"1.0",3)==0))
	{
		// Remove Content-Length and Chunk it!
		if(n!=NULL)
		{
			n->Field = "Transfer-Encoding";
			n->FieldLength = 17;
			n->FieldData = "chunked";
			n->FieldDataLength = 7;
		}
		else
		{
			ILibAddHeaderLine(header,"Transfer-Encoding",17,"chunked",7);
		}
	}
	else
	{
		// Check to see if they gave us a Content-Length
		if(n==NULL)
		{
			// Must Close Socket when done
			session->Reserved6=1;
		}
	}
	bufferLength = ILibGetRawPacket(header,&buffer);
	RetVal = ILibWebServer_Send_Raw(session,buffer,bufferLength,0,0);
	ILibDestructPacket(header);
	return(RetVal);
}
int ILibWebServer_Send(struct ILibWebServer_Session *session, struct packetheader *packet)
{
	char *buffer;
	int bufferSize;
	int RetVal = 0;

	session->Reserved4=1;
	bufferSize = ILibGetRawPacket(packet,&buffer);

	RetVal = ILibAsyncServerSocket_Send(session->Reserved1,session->Reserved2,buffer,bufferSize,0);
	if(RetVal==0)
	{
		// Completed Send
		RetVal = ILibWebServer_RequestAnswered(session);
	}
	ILibDestructPacket(packet);
	return(RetVal);
}