@@ -166,54 +166,44 @@ static int _applemidi_update_runloop_source( struct MIDIDriverAppleMIDI * driver
166
166
}
167
167
168
168
169
- static int _applemidi_connect ( struct MIDIDriverAppleMIDI * driver ) {
170
- int result = 0 ;
169
+ static int _applemidi_bind ( int fd , int port ) {
171
170
#if (defined(AF_INET6 ) && defined(ENABLE_IPV6 ))
172
171
struct sockaddr_in6 addr ;
173
172
memset (& addr , 0 , sizeof (addr ));
173
+ addr .sin6_family = AF_INET6 ;
174
+ addr .sin6_addr = in6addr_any ;
175
+ addr .sin6_port = htons ( port );
176
+ #else
177
+ struct sockaddr_in addr ;
178
+ memset (& addr , 0 , sizeof (addr ));
179
+ addr .sin_family = AF_INET ;
180
+ addr .sin_addr .s_addr = INADDR_ANY ;
181
+ addr .sin_port = htons ( port );
182
+ #endif
183
+ return bind ( fd , (struct sockaddr * ) & addr , sizeof (addr ) );
184
+ }
174
185
175
- if ( driver -> control_socket <= 0 ) {
176
- addr .sin6_family = AF_INET6 ;
177
- addr .sin6_addr = in6addr_any ;
178
- addr .sin6_port = htons ( driver -> port );
179
-
180
- driver -> control_socket = socket ( PF_INET6 , SOCK_DGRAM , 0 );
181
- if (driver -> control_socket != -1 )
182
- result = bind ( driver -> control_socket , (struct sockaddr * ) & addr , sizeof (addr ) );
183
- }
184
-
185
- if ( driver -> rtp_socket <= 0 ) {
186
- addr .sin6_family = AF_INET6 ;
187
- addr .sin6_addr = in6addr_any ;
188
- addr .sin6_port = htons ( driver -> port + 1 );
189
186
190
- driver -> rtp_socket = socket ( PF_INET6 , SOCK_DGRAM , 0 );
191
- if ( driver -> rtp_socket != -1 )
192
- result = bind ( driver -> rtp_socket , ( struct sockaddr * ) & addr , sizeof ( addr ) );
193
- }
187
+ static int _applemidi_connect ( struct MIDIDriverAppleMIDI * driver ) {
188
+ int result = 0 ;
189
+ #if (defined( AF_INET6 ) && defined( ENABLE_IPV6 ))
190
+ int pf = PF_INET6 ;
194
191
#else
195
- struct sockaddr_in addr ;
196
- memset (& addr , 0 , sizeof (addr ));
197
- if ( driver -> control_socket <= 0 ) {
198
- addr .sin_family = AF_INET ;
199
- addr .sin_addr .s_addr = INADDR_ANY ;
200
- addr .sin_port = htons ( driver -> port );
192
+ int pf = PF_INET ;
193
+ #endif
201
194
202
- driver -> control_socket = socket ( PF_INET , SOCK_DGRAM , 0 );
203
- if (driver -> control_socket != -1 )
204
- result = bind ( driver -> control_socket , (struct sockaddr * ) & addr , sizeof (addr ) );
195
+ if ( driver -> control_socket <= 0 ) {
196
+ driver -> control_socket = socket ( pf , SOCK_DGRAM , 0 );
197
+ if ( driver -> control_socket != -1 )
198
+ result = _applemidi_bind ( driver -> control_socket , driver -> port );
205
199
}
206
200
207
- if ( driver -> rtp_socket <= 0 ) {
208
- addr .sin_family = AF_INET ;
209
- addr .sin_addr .s_addr = INADDR_ANY ;
210
- addr .sin_port = htons ( driver -> port + 1 );
211
-
212
- driver -> rtp_socket = socket ( PF_INET , SOCK_DGRAM , 0 );
7D23
213
- if (driver -> control_socket != -1 )
214
- result = bind ( driver -> rtp_socket , (struct sockaddr * ) & addr , sizeof (addr ) );
201
+ if ( result == 0 && driver -> rtp_socket <= 0 ) {
202
+ driver -> rtp_socket = socket ( pf , SOCK_DGRAM , 0 );
203
+ if ( driver -> rtp_socket != -1 )
204
+ result = _applemidi_bind ( driver -> rtp_socket , driver -> port + 1 );
215
205
}
216
- #endif
206
+
217
207
return result ;
218
208
}
219
209
0 commit comments