View | Details | Raw Unified | Return to bug 223117
Collapse All | Expand All

(-)drivers/blazer_usb.c (-22 / +12 lines)
Lines 118-126 static int phoenix_command(const char *cmd, char *buf, size_t buflen) Link Here
118
		 */
118
		 */
119
		switch (ret)
119
		switch (ret)
120
		{
120
		{
121
		case -EPIPE:		/* Broken pipe */
121
		case LIBUSB_ERROR_PIPE:		/* Broken pipe */
122
			usb_clear_halt(udev, 0x81);
122
			usb_clear_halt(udev, 0x81);
123
		case -ETIMEDOUT:	/* Connection timed out */
123
		case LIBUSB_ERROR_TIMEOUT:	/* Connection timed out */
124
			break;
124
			break;
125
		}
125
		}
126
126
Lines 188-194 static int ippon_command(const char *cmd, char *buf, size_t buflen) Link Here
188
			0x09, 0x2, 0, &tmp[i], 8, 1000);
188
			0x09, 0x2, 0, &tmp[i], 8, 1000);
189
189
190
		if (ret <= 0) {
190
		if (ret <= 0) {
191
			upsdebugx(3, "send: %s", (ret != -ETIMEDOUT) ? usb_strerror() : "Connection timed out");
191
			upsdebugx(3, "send: %s", (ret != LIBUSB_ERROR_TIMEOUT) ? usb_strerror() : "Connection timed out");
192
			return ret;
192
			return ret;
193
		}
193
		}
194
	}
194
	}
Lines 203-209 static int ippon_command(const char *cmd, char *buf, size_t buflen) Link Here
203
	 * will happen after successfully writing a command to the UPS)
203
	 * will happen after successfully writing a command to the UPS)
204
	 */
204
	 */
205
	if (ret <= 0) {
205
	if (ret <= 0) {
206
		upsdebugx(3, "read: %s", (ret != -ETIMEDOUT) ? usb_strerror() : "Connection timed out");
206
		upsdebugx(3, "read: %s", (ret != LIBUSB_ERROR_TIMEOUT) ? usb_strerror() : "Connection timed out");
207
		return ret;
207
		return ret;
208
	}
208
	}
209
209
Lines 423-460 int blazer_command(const char *cmd, char *buf, size_t buflen) Link Here
423
423
424
	switch (ret)
424
	switch (ret)
425
	{
425
	{
426
	case -EBUSY:		/* Device or resource busy */
426
	case LIBUSB_ERROR_BUSY:		/* Device or resource busy */
427
		fatal_with_errno(EXIT_FAILURE, "Got disconnected by another driver");
427
		fatal_with_errno(EXIT_FAILURE, "Got disconnected by another driver");
428
428
429
	case -EPERM:		/* Operation not permitted */
429
	case LIBUSB_ERROR_PIPE:		/* Broken pipe */
430
		fatal_with_errno(EXIT_FAILURE, "Permissions problem");
431
432
	case -EPIPE:		/* Broken pipe */
433
		if (usb_clear_halt(udev, 0x81) == 0) {
430
		if (usb_clear_halt(udev, 0x81) == 0) {
434
			upsdebugx(1, "Stall condition cleared");
431
			upsdebugx(1, "Stall condition cleared");
435
			break;
432
			break;
436
		}
433
		}
437
#ifdef ETIME
438
	case -ETIME:		/* Timer expired */
439
#endif
440
		if (usb_reset(udev) == 0) {
434
		if (usb_reset(udev) == 0) {
441
			upsdebugx(1, "Device reset handled");
435
			upsdebugx(1, "Device reset handled");
442
		}
436
		}
443
	case -ENODEV:		/* No such device */
437
	case LIBUSB_ERROR_NO_DEVICE: /* No such device */
444
	case -EACCES:		/* Permission denied */
438
	case LIBUSB_ERROR_ACCESS:    /* Permission denied */
445
	case -EIO:		/* I/O error */
439
	case LIBUSB_ERROR_IO:        /* I/O error */
446
	case -ENXIO:		/* No such device or address */
440
	case LIBUSB_ERROR_NOT_FOUND: /* No such file or directory */
447
	case -ENOENT:		/* No such file or directory */
448
		/* Uh oh, got to reconnect! */
441
		/* Uh oh, got to reconnect! */
449
		usb->close(udev);
442
		usb->close(udev);
450
		udev = NULL;
443
		udev = NULL;
451
		break;
444
		break;
452
445
453
	case -ETIMEDOUT:	/* Connection timed out */
446
	case LIBUSB_ERROR_TIMEOUT:  /* Connection timed out */
454
	case -EOVERFLOW:	/* Value too large for defined data type */
447
	case LIBUSB_ERROR_OVERFLOW: /* Value too large for defined data type */
455
#ifdef EPROTO
456
	case -EPROTO:		/* Protocol error */
457
#endif
458
	default:
448
	default:
459
		break;
449
		break;
460
	}
450
	}
(-)drivers/libshut.c (-2 / +2 lines)
Lines 809-818 int shut_get_string_simple(int upsfd, int index, Link Here
809
		return ret;
809
		return ret;
810
810
811
	if (tbuf[1] != USB_DT_STRING)
811
	if (tbuf[1] != USB_DT_STRING)
812
		return -EIO;
812
		return LIBUSB_ERROR_IO;
813
813
814
	if (tbuf[0] > ret)
814
	if (tbuf[0] > ret)
815
		return -EFBIG;
815
		return LIBUSB_ERROR_OVERFLOW;
816
816
817
	/* skip the UTF8 zero'ed high bytes */
817
	/* skip the UTF8 zero'ed high bytes */
818
	for (di = 0, si = 2; si < tbuf[0]; si += 2)
818
	for (di = 0, si = 2; si < tbuf[0]; si += 2)
(-)drivers/libusb.c (-17 / +12 lines)
Lines 428-453 static int libusb_strerror(const int ret, const char *desc) Link Here
428
428
429
	switch(ret)
429
	switch(ret)
430
	{
430
	{
431
	case -EBUSY:	/* Device or resource busy */
431
	case LIBUSB_ERROR_BUSY:			/* Device or resource busy */
432
	case -EPERM:	/* Operation not permitted */
432
	case LIBUSB_ERROR_NO_DEVICE:		/* No such device */
433
	case -ENODEV:	/* No such device */
433
	case LIBUSB_ERROR_ACCESS:		/* Permission denied */
434
	case -EACCES:	/* Permission denied */
434
	case LIBUSB_ERROR_IO:			/* I/O error */
435
	case -EIO:	/* I/O error */
435
	case LIBUSB_ERROR_NOT_FOUND:		/* No such file or directory */
436
	case -ENXIO:	/* No such device or address */
436
	case LIBUSB_ERROR_PIPE:			/* Broken pipe */
437
	case -ENOENT:	/* No such file or directory */
437
	case LIBUSB_ERROR_NOT_SUPPORTED:	/* Function not implemented */
438
	case -EPIPE:	/* Broken pipe */
439
	case -ENOSYS:	/* Function not implemented */
440
		upslogx(LOG_DEBUG, "%s: %s", desc, usb_strerror());
438
		upslogx(LOG_DEBUG, "%s: %s", desc, usb_strerror());
441
		return ret;
439
		return ret;
442
440
443
	case -ETIMEDOUT:	/* Connection timed out */
441
	case LIBUSB_ERROR_TIMEOUT:		/* Connection timed out */
444
		upsdebugx(2, "%s: Connection timed out", desc);
442
		upsdebugx(2, "%s: Connection timed out", desc);
445
		return 0;
443
		return 0;
446
444
447
	case -EOVERFLOW:	/* Value too large for defined data type */
445
	case LIBUSB_ERROR_OVERFLOW:		/* Value too large for defined data type */
448
#ifdef EPROTO
449
	case -EPROTO:	/* Protocol error */
450
#endif
451
		upsdebugx(2, "%s: %s", desc, usb_strerror());
446
		upsdebugx(2, "%s: %s", desc, usb_strerror());
452
		return 0;
447
		return 0;
453
448
Lines 478-484 static int libusb_get_report(usb_dev_handle *udev, int ReportId, unsigned char * Link Here
478
		0, raw_buf, ReportSize, USB_TIMEOUT);
473
		0, raw_buf, ReportSize, USB_TIMEOUT);
479
474
480
	/* Ignore "protocol stall" (for unsupported request) on control endpoint */
475
	/* Ignore "protocol stall" (for unsupported request) on control endpoint */
481
	if (ret == -EPIPE) {
476
	if (ret == LIBUSB_ERROR_PIPE) {
482
		return 0;
477
		return 0;
483
	}
478
	}
484
479
Lines 500-506 static int libusb_set_report(usb_dev_handle *udev, int ReportId, unsigned char * Link Here
500
		0, raw_buf, ReportSize, USB_TIMEOUT);
495
		0, raw_buf, ReportSize, USB_TIMEOUT);
501
496
502
	/* Ignore "protocol stall" (for unsupported request) on control endpoint */
497
	/* Ignore "protocol stall" (for unsupported request) on control endpoint */
503
	if (ret == -EPIPE) {
498
	if (ret == LIBUSB_ERROR_PIPE) {
504
		return 0;
499
		return 0;
505
	}
500
	}
506
501
Lines 532-538 static int libusb_get_interrupt(usb_dev_handle *udev, unsigned char *buf, int bu Link Here
532
	ret = usb_interrupt_read(udev, 0x81, (char *)buf, bufsize, timeout);
527
	ret = usb_interrupt_read(udev, 0x81, (char *)buf, bufsize, timeout);
533
528
534
	/* Clear stall condition */
529
	/* Clear stall condition */
535
	if (ret == -EPIPE) {
530
	if (ret == LIBUSB_ERROR_PIPE) {
536
		ret = usb_clear_halt(udev, 0x81);
531
		ret = usb_clear_halt(udev, 0x81);
537
	}
532
	}
538
533
(-)drivers/libusb.h (+18 lines)
Lines 36-41 Link Here
36
36
37
#include <usb.h>	/* libusb header file */
37
#include <usb.h>	/* libusb header file */
38
38
39
/* libusb 1.0 errors used by FreeBSD */
40
enum libusb_error {
41
        LIBUSB_SUCCESS = 0,
42
        LIBUSB_ERROR_IO = -1,
43
        LIBUSB_ERROR_INVALID_PARAM = -2,
44
        LIBUSB_ERROR_ACCESS = -3,
45
        LIBUSB_ERROR_NO_DEVICE = -4,
46
        LIBUSB_ERROR_NOT_FOUND = -5,
47
        LIBUSB_ERROR_BUSY = -6,
48
        LIBUSB_ERROR_TIMEOUT = -7,
49
        LIBUSB_ERROR_OVERFLOW = -8,
50
        LIBUSB_ERROR_PIPE = -9,
51
        LIBUSB_ERROR_INTERRUPTED = -10,
52
        LIBUSB_ERROR_NO_MEM = -11,
53
        LIBUSB_ERROR_NOT_SUPPORTED = -12,
54
        LIBUSB_ERROR_OTHER = -99,
55
};
56
39
extern upsdrv_info_t comm_upsdrv_info; 
57
extern upsdrv_info_t comm_upsdrv_info; 
40
58
41
/*!
59
/*!
(-)drivers/nutdrv_qx.c (-22 / +12 lines)
Lines 561-569 static int phoenix_command(const char *cmd, char *buf, size_t buflen) Link Here
561
		 * In order to read correct replies we need to flush the output buffers of the converter until we get no more data (ie, it times out). */
561
		 * In order to read correct replies we need to flush the output buffers of the converter until we get no more data (ie, it times out). */
562
		switch (ret)
562
		switch (ret)
563
		{
563
		{
564
		case -EPIPE:		/* Broken pipe */
564
		case LIBUSB_ERROR_PIPE:		/* Broken pipe */
565
			usb_clear_halt(udev, 0x81);
565
			usb_clear_halt(udev, 0x81);
566
		case -ETIMEDOUT:	/* Connection timed out */
566
		case LIBUSB_ERROR_TIMEOUT:	/* Connection timed out */
567
			break;
567
			break;
568
		}
568
		}
569
569
Lines 635-641 static int ippon_command(const char *cmd, char *buf, size_t buflen) Link Here
635
		ret = usb_control_msg(udev, USB_ENDPOINT_OUT + USB_TYPE_CLASS + USB_RECIP_INTERFACE, 0x09, 0x2, 0, &tmp[i], 8, 1000);
635
		ret = usb_control_msg(udev, USB_ENDPOINT_OUT + USB_TYPE_CLASS + USB_RECIP_INTERFACE, 0x09, 0x2, 0, &tmp[i], 8, 1000);
636
636
637
		if (ret <= 0) {
637
		if (ret <= 0) {
638
			upsdebugx(3, "send: %s (%d)", (ret != -ETIMEDOUT) ? usb_strerror() : "Connection timed out", ret);
638
			upsdebugx(3, "send: %s (%d)", (ret != LIBUSB_ERROR_TIMEOUT) ? usb_strerror() : "Connection timed out", ret);
639
			return ret;
639
			return ret;
640
		}
640
		}
641
641
Lines 648-654 static int ippon_command(const char *cmd, char *buf, size_t buflen) Link Here
648
648
649
	/* Any errors here mean that we are unable to read a reply (which will happen after successfully writing a command to the UPS) */
649
	/* Any errors here mean that we are unable to read a reply (which will happen after successfully writing a command to the UPS) */
650
	if (ret <= 0) {
650
	if (ret <= 0) {
651
		upsdebugx(3, "read: %s (%d)", (ret != -ETIMEDOUT) ? usb_strerror() : "Connection timed out", ret);
651
		upsdebugx(3, "read: %s (%d)", (ret != LIBUSB_ERROR_TIMEOUT) ? usb_strerror() : "Connection timed out", ret);
652
		return ret;
652
		return ret;
653
	}
653
	}
654
654
Lines 2124-2161 static int qx_command(const char *cmd, char *buf, size_t buflen) Link Here
2124
2124
2125
		switch (ret)
2125
		switch (ret)
2126
		{
2126
		{
2127
		case -EBUSY:		/* Device or resource busy */
2127
		case LIBUSB_ERROR_BUSY:		/* Device or resource busy */
2128
			fatal_with_errno(EXIT_FAILURE, "Got disconnected by another driver");
2128
			fatal_with_errno(EXIT_FAILURE, "Got disconnected by another driver");
2129
2129
2130
		case -EPERM:		/* Operation not permitted */
2130
		case LIBUSB_ERROR_PIPE:		/* Broken pipe */
2131
			fatal_with_errno(EXIT_FAILURE, "Permissions problem");
2132
2133
		case -EPIPE:		/* Broken pipe */
2134
			if (usb_clear_halt(udev, 0x81) == 0) {
2131
			if (usb_clear_halt(udev, 0x81) == 0) {
2135
				upsdebugx(1, "Stall condition cleared");
2132
				upsdebugx(1, "Stall condition cleared");
2136
				break;
2133
				break;
2137
			}
2134
			}
2138
	#ifdef ETIME
2139
		case -ETIME:		/* Timer expired */
2140
	#endif	/* ETIME */
2141
			if (usb_reset(udev) == 0) {
2135
			if (usb_reset(udev) == 0) {
2142
				upsdebugx(1, "Device reset handled");
2136
				upsdebugx(1, "Device reset handled");
2143
			}
2137
			}
2144
		case -ENODEV:		/* No such device */
2138
		case LIBUSB_ERROR_NO_DEVICE: /* No such device */
2145
		case -EACCES:		/* Permission denied */
2139
		case LIBUSB_ERROR_ACCESS:    /* Permission denied */
2146
		case -EIO:		/* I/O error */
2140
		case LIBUSB_ERROR_IO:        /* I/O error */
2147
		case -ENXIO:		/* No such device or address */
2141
		case LIBUSB_ERROR_NOT_FOUND: /* No such file or directory */
2148
		case -ENOENT:		/* No such file or directory */
2149
			/* Uh oh, got to reconnect! */
2142
			/* Uh oh, got to reconnect! */
2150
			usb->close(udev);
2143
			usb->close(udev);
2151
			udev = NULL;
2144
			udev = NULL;
2152
			break;
2145
			break;
2153
2146
2154
		case -ETIMEDOUT:	/* Connection timed out */
2147
		case LIBUSB_ERROR_TIMEOUT:  /* Connection timed out */
2155
		case -EOVERFLOW:	/* Value too large for defined data type */
2148
		case LIBUSB_ERROR_OVERFLOW: /* Value too large for defined data type */
2156
#ifdef EPROTO
2157
		case -EPROTO:		/* Protocol error */
2158
#endif
2159
		default:
2149
		default:
2160
			break;
2150
			break;
2161
		}
2151
		}
(-)drivers/riello_usb.c (-22 / +8 lines)
Lines 346-387 int riello_command(uint8_t *cmd, uint8_t *buf, uint16_t length, uint16_t buflen) Link Here
346
346
347
	switch (ret)
347
	switch (ret)
348
	{
348
	{
349
	case -EBUSY:		/* Device or resource busy */
349
	case LIBUSB_ERROR_BUSY:		/* Device or resource busy */
350
		fatal_with_errno(EXIT_FAILURE, "Got disconnected by another driver");
350
		fatal_with_errno(EXIT_FAILURE, "Got disconnected by another driver");
351
351
352
	case -EPERM:		/* Operation not permitted */
352
	case LIBUSB_ERROR_PIPE:		/* Broken pipe */
353
		fatal_with_errno(EXIT_FAILURE, "Permissions problem");
354
355
	case -EPIPE:		/* Broken pipe */
356
		if (usb_clear_halt(udev, 0x81) == 0) {
353
		if (usb_clear_halt(udev, 0x81) == 0) {
357
			upsdebugx(1, "Stall condition cleared");
354
			upsdebugx(1, "Stall condition cleared");
358
			break;
355
			break;
359
		}
356
		}
360
#ifdef ETIME
361
	case -ETIME:		/* Timer expired */
362
#endif
363
		if (usb_reset(udev) == 0) {
357
		if (usb_reset(udev) == 0) {
364
			upsdebugx(1, "Device reset handled");
358
			upsdebugx(1, "Device reset handled");
365
		}
359
		}
366
	case -ENODEV:		/* No such device */
360
	case LIBUSB_ERROR_NO_DEVICE: /* No such device */
367
	case -EACCES:		/* Permission denied */
361
	case LIBUSB_ERROR_ACCESS:    /* Permission denied */
368
	case -EIO:		/* I/O error */
362
	case LIBUSB_ERROR_IO:        /* I/O error */
369
	case -ENXIO:		/* No such device or address */
363
	case LIBUSB_ERROR_NOT_FOUND: /* No such file or directory */
370
	case -ENOENT:		/* No such file or directory */
371
		/* Uh oh, got to reconnect! */
364
		/* Uh oh, got to reconnect! */
372
		usb->close(udev);
365
		usb->close(udev);
373
		udev = NULL;
366
		udev = NULL;
374
		break;
367
		break;
375
368
376
	case -ETIMEDOUT:	/* Connection timed out */
369
	case LIBUSB_ERROR_TIMEOUT:  /* Connection timed out */
377
		upsdebugx (3, "riello_command err: Resource temporarily unavailable");
370
	case LIBUSB_ERROR_OVERFLOW: /* Value too large for defined data type */
378
379
380
	case -EOVERFLOW:	/* Value too large for defined data type */
381
#ifdef EPROTO
382
	case -EPROTO:		/* Protocol error */
383
#endif
384
		break;
385
	default:
371
	default:
386
		break;
372
		break;
387
	}
373
	}
(-)drivers/tripplite_usb.c (-2 / +2 lines)
Lines 499-505 void usb_comm_fail(int res, const char *msg) Link Here
499
	static int try = 0;
499
	static int try = 0;
500
500
501
	switch(res) {
501
	switch(res) {
502
		case -EBUSY:
502
		case LIBUSB_ERROR_BUSY:
503
			upslogx(LOG_WARNING, "%s: Device claimed by another process", msg);
503
			upslogx(LOG_WARNING, "%s: Device claimed by another process", msg);
504
			fatalx(EXIT_FAILURE, "Terminating: EBUSY");
504
			fatalx(EXIT_FAILURE, "Terminating: EBUSY");
505
			break;
505
			break;
Lines 907-913 void upsdrv_initinfo(void) Link Here
907
	if(tl_model != TRIPP_LITE_SMARTPRO ) {
907
	if(tl_model != TRIPP_LITE_SMARTPRO ) {
908
		ret = send_cmd(w_msg, sizeof(w_msg), w_value, sizeof(w_value)-1);
908
		ret = send_cmd(w_msg, sizeof(w_msg), w_value, sizeof(w_value)-1);
909
		if(ret <= 0) {
909
		if(ret <= 0) {
910
			if(ret == -EPIPE) {
910
			if(ret == LIBUSB_ERROR_PIPE) {
911
				fatalx(EXIT_FAILURE, "Could not reset watchdog. Please check and"
911
				fatalx(EXIT_FAILURE, "Could not reset watchdog. Please check and"
912
						"see if usbhid-ups(8) works with this UPS.");
912
						"see if usbhid-ups(8) works with this UPS.");
913
			} else {
913
			} else {
(-)drivers/usbhid-ups.c (-26 / +13 lines)
Lines 790-811 void upsdrv_updateinfo(void) Link Here
790
	/* Get HID notifications on Interrupt pipe first */
790
	/* Get HID notifications on Interrupt pipe first */
791
	if (use_interrupt_pipe == TRUE) {
791
	if (use_interrupt_pipe == TRUE) {
792
		evtCount = HIDGetEvents(udev, event, MAX_EVENT_NUM);
792
		evtCount = HIDGetEvents(udev, event, MAX_EVENT_NUM);
793
		switch (evtCount)
793
		if (evtCount < 0) {
794
		{
794
			if (evtCount == LIBUSB_ERROR_BUSY) {
795
		case -EBUSY:		/* Device or resource busy */
795
				upslog_with_errno(LOG_CRIT, "Got disconnected by another driver");
796
			upslog_with_errno(LOG_CRIT, "Got disconnected by another driver");
796
			}
797
		case -EPERM:		/* Operation not permitted */
798
		case -ENODEV:		/* No such device */
799
		case -EACCES:		/* Permission denied */
800
		case -EIO:		/* I/O error */
801
		case -ENXIO:		/* No such device or address */
802
		case -ENOENT:		/* No such file or directory */
803
			/* Uh oh, got to reconnect! */
797
			/* Uh oh, got to reconnect! */
804
			hd = NULL;
798
			hd = NULL;
805
			return;
799
		} else {
806
		default:
807
			upsdebugx(1, "Got %i HID objects...", (evtCount >= 0) ? evtCount : 0);
800
			upsdebugx(1, "Got %i HID objects...", (evtCount >= 0) ? evtCount : 0);
808
			break;
809
		}
801
		}
810
	} else {
802
	} else {
811
		evtCount = 0;
803
		evtCount = 0;
Lines 1280-1293 static bool_t hid_ups_walk(walkmode_t mode) Link Here
1280
1272
1281
		switch (retcode)
1273
		switch (retcode)
1282
		{
1274
		{
1283
		case -EBUSY:		/* Device or resource busy */
1275
		case LIBUSB_ERROR_BUSY:		/* Device or resource busy */
1284
			upslog_with_errno(LOG_CRIT, "Got disconnected by another driver");
1276
			upslog_with_errno(LOG_CRIT, "Got disconnected by another driver");
1285
		case -EPERM:		/* Operation not permitted */
1277
		case LIBUSB_ERROR_NO_DEVICE:		/* No such device */
1286
		case -ENODEV:		/* No such device */
1278
		case LIBUSB_ERROR_ACCESS:		/* Permission denied */
1287
		case -EACCES:		/* Permission denied */
1279
		case LIBUSB_ERROR_IO:			/* I/O error */
1288
		case -EIO:		/* I/O error */
1280
		case LIBUSB_ERROR_NOT_FOUND:		/* No such file or directory */
1289
		case -ENXIO:		/* No such device or address */
1290
		case -ENOENT:		/* No such file or directory */
1291
			/* Uh oh, got to reconnect! */
1281
			/* Uh oh, got to reconnect! */
1292
			hd = NULL;
1282
			hd = NULL;
1293
			return FALSE;
1283
			return FALSE;
Lines 1298-1309 static bool_t hid_ups_walk(walkmode_t mode) Link Here
1298
		case 0:
1288
		case 0:
1299
			continue;
1289
			continue;
1300
1290
1301
		case -ETIMEDOUT:	/* Connection timed out */
1291
		case LIBUSB_ERROR_TIMEOUT:	/* Connection timed out */
1302
		case -EOVERFLOW:	/* Value too large for defined data type */
1292
		case LIBUSB_ERROR_OVERFLOW:	/* Value too large for defined data type */
1303
#ifdef EPROTO
1293
		case LIBUSB_ERROR_PIPE:		/* Broken pipe */
1304
		case -EPROTO:		/* Protocol error */
1305
#endif
1306
		case -EPIPE:		/* Broken pipe */
1307
		default:
1294
		default:
1308
			/* Don't know what happened, try again later... */
1295
			/* Don't know what happened, try again later... */
1309
			continue;
1296
			continue;

Return to bug 223117