LOCAL void network_connect_cb(void *arg) {
	HTTP_REQUEST *request;
	switch(mConnectionState) {
	case CS_GETINFO:
		request = &mInfoRequest;
		dhdebug("Send info request...");
		break;
	case CS_REGISTER:
		request = &mRegisterRequest;
		dhdebug("Send register request...");
		break;
	case CS_POLL:
		request = &mPollRequest;
		dhdebug("Send poll request...");
		break;
	default:
		dhdebug("ASSERT: networkConnectCb wrong state %d", mConnectionState);
	}
	int res;
	if( (res = espconn_send(&mDHConnector, request->data, request->len)) != ESPCONN_OK) {
		mConnectionState = CS_DISCONNECT;
		dhesperrors_espconn_result("network_connect_cb failed:", res);
		espconn_disconnect(&mDHConnector);
	} else {
		dhstatistic_add_bytes_sent(request->len);
	}
}
LOCAL void ICACHE_FLASH_ATTR senderConnectCb(void *arg) {
	int res;
	if( (res = espconn_send(&mDHSender, mSenderRequest.data, mSenderRequest.len)) != ESPCONN_OK) {
		dhesperrors_espconn_result("sender espconn_send failed:", res);
		espconn_disconnect(&mDHSender);
	} else {
		dhstatistic_add_bytes_sent(mSenderRequest.len);
	}
}