View | Details | Raw Unified | Return to ticket 14446
Collapse All | Expand All

(-)a/src/common/slurm_protocol_api.c (-3 / +9 lines)
Lines 2596-2608 again: Link Here
2596
2596
2597
	if (pfd.revents & POLLERR) {
2597
	if (pfd.revents & POLLERR) {
2598
		int value = -1;
2598
		int value = -1;
2599
		int rc;
2600
		int err = SLURM_SUCCESS;
2599
2601
2600
		if (ioctl(fd, TIOCOUTQ, &value))
2602
		if (ioctl(fd, TIOCOUTQ, &value))
2601
			log_flag(NET, "%s: TIOCOUTQ ioctl failed",
2603
			log_flag(NET, "%s: TIOCOUTQ ioctl failed",
2602
				 __func__);
2604
				 __func__);
2603
		fd_get_socket_error(fd, &errno);
2605
2604
		log_flag(NET, "%s: poll error with %d outstanding: %m",
2606
		if ((rc = fd_get_socket_error(fd, &err)))
2605
			 __func__, value);
2607
			log_flag(NET, "%s fd_get_socket_error failed with %s",
2608
				 __func__, slurm_strerror(rc));
2609
		else
2610
			log_flag(NET, "%s: poll error with %d outstanding: %s",
2611
				 __func__, value, slurm_strerror(err));
2606
2612
2607
		(void) close(fd);
2613
		(void) close(fd);
2608
		return SLURM_ERROR;
2614
		return SLURM_ERROR;
(-)a/src/common/slurm_protocol_socket.c (-17 / +31 lines)
Lines 242-252 extern int slurm_send_timeout(int fd, char *buf, size_t size, Link Here
242
		 * nonblocking read means just that.
242
		 * nonblocking read means just that.
243
		 */
243
		 */
244
		if (ufds.revents & POLLERR) {
244
		if (ufds.revents & POLLERR) {
245
			int e;
245
			int e, rc;
246
246
247
			fd_get_socket_error(fd, &e);
247
			if ((rc = fd_get_socket_error(fd, &e)))
248
			debug("%s: Socket POLLERR: %s",
248
				debug("%s: Socket POLLERR, fd_get_socket_error failed: %s",
249
			      __func__, slurm_strerror(e));
249
				      __func__, slurm_strerror(rc));
250
			else
251
				debug("%s: Socket POLLERR: %s",
252
				      __func__, slurm_strerror(e));
250
253
251
			slurm_seterrno(e);
254
			slurm_seterrno(e);
252
			sent = SLURM_ERROR;
255
			sent = SLURM_ERROR;
Lines 254-263 extern int slurm_send_timeout(int fd, char *buf, size_t size, Link Here
254
		}
257
		}
255
		if ((ufds.revents & POLLHUP) || (ufds.revents & POLLNVAL) ||
258
		if ((ufds.revents & POLLHUP) || (ufds.revents & POLLNVAL) ||
256
		    (recv(fd, &temp, 1, flags) == 0)) {
259
		    (recv(fd, &temp, 1, flags) == 0)) {
257
			int so_err;
260
			int so_err, rc;
258
			fd_get_socket_error(fd, &so_err);
261
			if ((rc = fd_get_socket_error(fd, &so_err)))
259
			debug2("%s: Socket no longer there: %s",
262
				debug2("%s: Socket no longer there, fd_get_socket_error failed: %s",
260
			       __func__, slurm_strerror(so_err));
263
				       __func__, slurm_strerror(rc));
264
			else
265
				debug2("%s: Socket no longer there: %s",
266
				       __func__, slurm_strerror(so_err));
261
			slurm_seterrno(so_err);
267
			slurm_seterrno(so_err);
262
			sent = SLURM_ERROR;
268
			sent = SLURM_ERROR;
263
			goto done;
269
			goto done;
Lines 352-362 extern int slurm_recv_timeout(int fd, char *buffer, size_t size, Link Here
352
		}
358
		}
353
359
354
		if (ufds.revents & POLLERR) {
360
		if (ufds.revents & POLLERR) {
355
			int e;
361
			int e, rc;
356
362
357
			fd_get_socket_error(fd, &e);
363
			if ((rc = fd_get_socket_error(fd, &e)))
358
			debug("%s: Socket POLLERR: %s",
364
				debug("%s: Socket POLLERR: fd_get_socket_error failed: %s",
359
			      __func__, slurm_strerror(e));
365
				      __func__, slurm_strerror(rc));
366
			else
367
				debug("%s: Socket POLLERR: %s",
368
				      __func__, slurm_strerror(e));
360
369
361
			slurm_seterrno(e);
370
			slurm_seterrno(e);
362
			recvlen = SLURM_ERROR;
371
			recvlen = SLURM_ERROR;
Lines 365-375 extern int slurm_recv_timeout(int fd, char *buffer, size_t size, Link Here
365
		if ((ufds.revents & POLLNVAL) ||
374
		if ((ufds.revents & POLLNVAL) ||
366
		    ((ufds.revents & POLLHUP) &&
375
		    ((ufds.revents & POLLHUP) &&
367
		     ((ufds.revents & POLLIN) == 0))) {
376
		     ((ufds.revents & POLLIN) == 0))) {
368
			int so_err;
377
			int so_err, rc;
369
			fd_get_socket_error(fd, &so_err);
378
			if ((rc = fd_get_socket_error(fd, &so_err))) {
370
			debug2("%s: Socket no longer there: %s",
379
				debug2("%s: Socket no longer there: fd_get_socket_error failed: %s",
371
			       __func__, slurm_strerror(so_err));
380
				       __func__, slurm_strerror(rc));
372
			slurm_seterrno(so_err);
381
				slurm_seterrno(rc);
382
			} else {
383
				debug2("%s: Socket no longer there: %s",
384
				       __func__, slurm_strerror(so_err));
385
				slurm_seterrno(so_err);
386
			}
373
			recvlen = SLURM_ERROR;
387
			recvlen = SLURM_ERROR;
374
			goto done;
388
			goto done;
375
		}
389
		}
(-)a/src/slurmrestd/conmgr.c (-8 / +18 lines)
Lines 1004-1016 static inline void _handle_poll_event(con_mgr_t *mgr, int fd, con_mgr_fd_t *con, Link Here
1004
	}
1004
	}
1005
	if (revents & POLLERR) {
1005
	if (revents & POLLERR) {
1006
		int err = SLURM_ERROR;
1006
		int err = SLURM_ERROR;
1007
		int rc;
1007
1008
1008
		if (con->is_socket)
1009
		if (con->is_socket) {
1009
			/* connection may have got RST */
1010
			/* connection may have got RST */
1010
			fd_get_socket_error(con->input_fd, &err);
1011
			if ((rc = fd_get_socket_error(con->input_fd, &err))) {
1012
				error("%s: [%s] poll error: fd_get_socket_error failed %s",
1013
				      __func__, con->name, slurm_strerror(rc));
1014
			} else {
1015
				error("%s: [%s] poll error: %s",
1016
				      __func__, con->name, slurm_strerror(err));
1017
			}
1018
		}
1011
1019
1012
		error("%s: [%s] poll error: %s",
1013
		      __func__, con->name, slurm_strerror(err));
1014
1020
1015
		_close_con(true, con);
1021
		_close_con(true, con);
1016
		return;
1022
		return;
Lines 1225-1233 static inline void _handle_listen_event(con_mgr_t *mgr, int fd, Link Here
1225
		      __func__, con->name);
1231
		      __func__, con->name);
1226
	} else if (revents & POLLERR) {
1232
	} else if (revents & POLLERR) {
1227
		int err = SLURM_ERROR;
1233
		int err = SLURM_ERROR;
1228
		fd_get_socket_error(con->input_fd, &err);
1234
		int rc;
1229
		error("%s: [%s] listen poll error: %s",
1235
		if ((rc = fd_get_socket_error(con->input_fd, &err))) {
1230
		      __func__, con->name, slurm_strerror(err));
1236
			error("%s: [%s] listen poll error: %s fd_get_socket_error failed:",
1237
			      __func__, con->name, slurm_strerror(rc));
1238
		} else {
1239
			error("%s: [%s] listen poll error: %s",
1240
			      __func__, con->name, slurm_strerror(err));
1241
		}
1231
	} else if (revents & POLLIN) {
1242
	} else if (revents & POLLIN) {
1232
		log_flag(NET, "%s: [%s] listen has incoming connection",
1243
		log_flag(NET, "%s: [%s] listen has incoming connection",
1233
			 __func__, con->name);
1244
			 __func__, con->name);
1234
- 

Return to ticket 14446