| 205 | #endif |
| 206 | |
| 207 | char * |
| 208 | cib_send_plaintext(int sock, xmlNode * msg) |
| 209 | { |
| 210 | char *xml_text = dump_xml_unformatted(msg); |
| 211 | |
| 212 | if (xml_text != NULL) { |
| 213 | int rc = 0; |
| 214 | char *unsent = xml_text; |
| 215 | int len = strlen(xml_text); |
| 216 | |
| 217 | len++; /* null char */ |
| 218 | crm_trace("Message on socket %d: size=%d", sock, len); |
| 219 | retry: |
| 220 | rc = write(sock, unsent, len); |
| 221 | if (rc < 0) { |
| 222 | switch (errno) { |
| 223 | case EINTR: |
| 224 | case EAGAIN: |
| 225 | crm_trace("Retry"); |
| 226 | goto retry; |
| 227 | default: |
| 228 | crm_perror(LOG_ERR, "Could only write %d of the remaining %d bytes", rc, len); |
| 229 | break; |
| 230 | } |
| 231 | |
| 232 | } else if (rc < len) { |
| 233 | crm_trace("Only sent %d of %d remaining bytes", rc, len); |
| 234 | len -= rc; |
| 235 | unsent += rc; |
| 236 | goto retry; |
| 237 | |
| 238 | } else { |
| 239 | crm_trace("Sent %d bytes: %.100s", rc, xml_text); |
| 240 | } |
| 241 | } |
| 242 | free(xml_text); |
| 243 | return NULL; |
| 244 | |
| 245 | } |
| 246 | |
| 247 | char * |
| 248 | cib_recv_plaintext(int sock) |
no test coverage detected