Example #1
0
//ws
int ICACHE_FLASH_ATTR http_websocket_HANDSHAKE(http_connection *c){

	http_reset_buffer(c);

	int ret = http_write(c," HTTP/1.1 101 Switching Protocols")	
	&& http_end_line(c)
	&& http_end_headers(c);		

}
Example #2
0
int ICACHE_FLASH_ATTR http_HEADER(http_connection *c,const char *header,const char *value){
	
	NODE_DBG("Writing  header: %s : %s",header,value);

	return http_write(c,header)
	&& http_write(c,": ")
	&& http_write(c,value)
	&& http_end_line(c);

}
Example #3
0
int ICACHE_FLASH_ATTR http_response_STATUS(http_connection *c,const char * status){

	return 
	http_response_start(c) && 
	http_write(c,status) && 
	http_end_line(c) &&
	//default headers
	http_HEADER(c,HTTP_SERVER,HTTP_DEFAULT_SERVER) &&
	http_HEADER(c,HTTP_CONNECTION,"Close");

} 
Example #4
0
//REQUEST
int ICACHE_FLASH_ATTR http_request_start(http_connection *c,const char *method,const char *path){
	
	http_reset_buffer(c);

	int ret = http_write(c,method)
	&& http_write(c," ")
	&& http_write(c,path)
	&& http_write(c," HTTP/1.0")
	&& http_end_line(c)
	&& http_HEADER(c,HTTP_CONNECTION,"Close");

	NODE_DBG("Request: %s",c->output.buffer);

}
static int http_find_next_line(char *s, int len, char **ret)
{
	char *r, *e;

	for (e = s;
	     len >= 2 && NULL == (r = http_end_line(e, len));
	     e++, len--);

	if (len >= 2) {
		*ret = r;
		return 0;
	} else {
		assert(len == 1 || len == 0);
		*ret = e+len;
		return 1;
	}
}
inline static int get_http_version(char *s, int len, char **ret, int *minor_version)
{
	char *c;
	char http_str[] = "HTTP/1.";
	int http_sz = sizeof(http_str)-1; // -1 for \n

	c = remove_whitespace(s, len);
	if (memcmp_fail_loc(c, http_str, len, http_sz, ret) ||
	    0 == (len - (*ret-s))) {
		*minor_version = -1;
		return 1;
	}
	c += http_sz;
	*minor_version = ((int)*c) - (int)'0';
	c++;
	if (http_end_line(c, len - (c-s))) c += 2;
	*ret = c;
	return 0;
}
Example #7
0
int ICACHE_FLASH_ATTR http_end_headers(http_connection *c){


	//write cached headers
	int j=0;
	while(j< MAX_HEADERS){

		if(c->output.headers[j].key!=NULL){
			//write header
			http_HEADER(c,c->output.headers[j].key,c->output.headers[j].value);

			//free header
			os_free(c->output.headers[j].value);
			c->output.headers[j].value=NULL;
			c->output.headers[j].key=NULL;
		}	

		j++;
	}

	//write final empty line
	return http_end_line(c);
}