LOCAL void network_recv_cb(void *arg, char *data, unsigned short len) {
	dhstatistic_add_bytes_received(len);
	const char *rc = find_http_responce_code(data, len);
	if (rc) { // HTTP
		if (*rc == '2') { // HTTP responce code 2xx - Success
			if (mConnectionState == CS_REGISTER) {
				dhdebug("Successfully register");
			} else {
				char *content = (char *) os_strstr(data, (char *) "\r\n\r\n");
				if (content) {
					int deep = 0;
					unsigned int pos = 0;
					unsigned int jsonstart = 0;
					while (pos < len) {
						if (data[pos] == '{') {
							if (deep == 0)
								jsonstart = pos;
							deep++;
						} else if (data[pos] == '}') {
							deep--;
							if (deep == 0) {
								struct jsonparse_state jparser;
								jsonparse_setup(&jparser, &data[jsonstart],
										pos - jsonstart);
								parse_json(&jparser);
							}
						}
						pos++;
					}
				}
			}
		} else {
			mConnectionState = CS_DISCONNECT;
			dhdebug("Connector HTTP response bad status %c%c%c", rc[0],rc[1],rc[2]);
			dhdebug(data);
			dhdebug("--------------------------------------");
			dhstatistic_server_errors_count();
		}
	} else {
		mConnectionState = CS_DISCONNECT;
		dhdebug("Connector HTTP magic number is wrong");
		dhstatistic_server_errors_count();
	}
	espconn_disconnect(&mDHConnector);
}
Example #2
0
LOCAL void ICACHE_FLASH_ATTR senderRecvCb(void *arg, char *data, unsigned short len) {
	dhstatistic_add_bytes_received(len);
	const char *rc = find_http_responce_code(data, len);
	if (rc) { // HTTP
		if (*rc == '2') { // HTTP responce code 2xx - Success
			mSenderTook = 0;
			dhdebug("Sender received OK");
		} else {
			dhdebug("Sender HTTP response bad status %c%c%c", rc[0],rc[1],rc[2]);
			dhdebug_ram(data);
			dhdebug("--------------------------------------");
			dhstatistic_server_errors_count();
		}
	} else {
		dhdebug("Sender received wrong HTTP magic");
		dhstatistic_server_errors_count();
	}
	espconn_disconnect(&mDHSender);
}