Коммит ca9ecafb создал по автору reshke's avatar reshke
Просмотр файлов

fix

владелец bceb52d1
Не найдено связанных запросов на слияние
Отображение с 46 дополнений и 42 удаления
+46 -42
......@@ -1744,60 +1744,64 @@ static od_frontend_status_t od_frontend_remote(od_client_t *client)
}
server->parse_msg = NULL;
if (!deployed) {
/* client expects parse complete, send it */
/* process to see parse reponse. */
machine_msg_t *msg;
msg = kiwi_fe_write_sync(NULL);
if (msg == NULL) {
status = OD_ESERVER_WRITE;
break;
}
rc = od_write(&server->io, msg);
if (rc == -1) {
status = OD_ESERVER_WRITE;
break;
}
machine_msg_t *pmsg;
pmsg = kiwi_be_write_parse_complete(NULL);
if (pmsg == NULL) {
status = OD_ECLIENT_WRITE;
break;
}
machine_iov_add(server->relay.iov, pmsg);
} else {
/* process to see parse reponse. */
machine_msg_t *msg;
msg = kiwi_fe_write_sync(NULL);
if (msg == NULL) {
status = OD_ESERVER_WRITE;
break;
}
rc = od_write(&server->io, msg);
if (rc == -1) {
status = OD_ESERVER_WRITE;
/* enter sync point mode */
server->sync_point = 1;
/* cleanup from previous runs */
server->sync_point_parse = 0;
od_server_sync_request(server, 1);
while (1) {
if (od_server_synchronized(server)) {
break;
}
// await here
/* enter sync point mode */
server->sync_point = 1;
od_log(&instance->logger, "sync-point", client,
server, "process await");
status = od_frontend_remote_process_server(
server, client, true);
/* cleanup from previous runs */
server->sync_point_parse = 0;
od_server_sync_request(server, 1);
if (status != OD_OK) {
break;
}
}
while (1) {
if (od_server_synchronized(server)) {
break;
}
// await here
server->sync_point = 0;
if (status != OD_OK) {
break;
}
/* sync point ok */
od_log(&instance->logger, "sync-point",
client, server, "process await");
status =
od_frontend_remote_process_server(
server, client, true);
if (!deployed) {
/* client expects parse complete, send it */
if (status != OD_OK) {
break;
}
machine_msg_t *pmsg;
pmsg = kiwi_be_write_parse_complete(NULL);
if (pmsg == NULL) {
status = OD_ECLIENT_WRITE;
break;
}
server->sync_point = 0;
if (status != OD_OK) {
rc = od_write(&client->io, pmsg);
if (rc == -1) {
status = OD_ECLIENT_WRITE;
break;
}
/* sync point ok */
} else {
/* has prepared statement parse succeseded?
* If it does not, empty internals structs.
*/
......
Поддерживает Markdown
0% или .
You are about to add 0 people to the discussion. Proceed with caution.
Сначала завершите редактирование этого сообщения!
Пожалуйста, зарегистрируйтесь или чтобы прокомментировать