- if (!client->connected())
- {
- if (!STG_CLIENT::reconnect())
- return emptyResult();
- client = STG_CLIENT::get();
- }
- response.done = false;
- client->request(type, toString(userName), toString(password), fromSTGPairs(pairs));
- pthread_mutex_lock(&response.mutex);
- timespec ts;
- clock_gettime(CLOCK_REALTIME, &ts);
- ts.tv_sec += 5;
- int res = 0;
- while (!response.done && res == 0)
- res = pthread_cond_timedwait(&response.cond, &response.mutex, &ts);
- pthread_mutex_unlock(&response.mutex);
- if (res != 0 || !response.status)
- return emptyResult();
- return toResult(response.result);
- } catch (const STG_CLIENT::Error& ex) {
+ return toResult(client->request(type, toString(userName), toString(password), fromSTGPairs(pairs)));
+ } catch (const std::runtime_error& ex) {