9239e5ca12
thanks to Giovanni Bechis <bigionews at snb dot it> who sent me a similar diff of what I had in my tree but totally forgot about tested under Treo 680 and LiveDrive (netsync) with jpilot and libmal
29 lines
790 B
Plaintext
29 lines
790 B
Plaintext
$OpenBSD: patch-libpisock_unixserial_c,v 1.3 2008/01/20 15:19:31 ajacoutot Exp $
|
|
--- libpisock/unixserial.c.orig Thu Oct 12 16:21:23 2006
|
|
+++ libpisock/unixserial.c Thu Jan 17 09:00:40 2008
|
|
@@ -161,13 +161,23 @@ s_open(pi_socket_t *ps, struct pi_sockaddr *addr, size
|
|
|
|
struct pi_serial_data *data =
|
|
(struct pi_serial_data *)ps->device->data;
|
|
+#define maxretries 100
|
|
+ int retries;
|
|
|
|
#ifndef SGTTY
|
|
struct termios tcn;
|
|
#else
|
|
struct sgttyb tcn;
|
|
#endif
|
|
- if ((fd = open(tty, O_RDWR | O_NONBLOCK)) < 0) {
|
|
+
|
|
+ for (retries = 0 ; retries <= maxretries ; retries++ ) {
|
|
+ if ((fd = open(tty, O_RDWR | O_NONBLOCK)) != -1) {
|
|
+ break;
|
|
+ }
|
|
+ usleep(50000);
|
|
+ }
|
|
+
|
|
+ if (fd == -1) {
|
|
ps->last_error = PI_ERR_GENERIC_SYSTEM;
|
|
return PI_ERR_GENERIC_SYSTEM; /* errno already set */
|
|
}
|